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/.github/workflows/test.yml b/.github/workflows/test.yml index 08ef13e467..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 @@ -123,7 +129,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/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/asc.js b/cli/asc.js index 6796f10866..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; } } } @@ -426,9 +441,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/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; 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 64d0e088a2..5b72ca0360 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,32 +5,31 @@ "requires": true, "packages": { "": { - "name": "assemblyscript", "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "101.0.0-nightly.20210904", - "long": "^4.0.0", - "source-map-support": "^0.5.19", - "ts-node": "^6.2.0" + "binaryen": "102.0.0-nightly.20211028", + "long": "^5.1.0", + "source-map-support": "^0.5.20", + "ts-node": "^10.4.0" }, "bin": { "asc": "bin/asc", "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.6", + "@typescript-eslint/eslint-plugin": "^5.3.1", + "@typescript-eslint/parser": "^5.3.1", "diff": "^5.0.0", - "eslint": "^7.15.0", - "glob": "^7.1.6", + "eslint": "^8.2.0", + "glob": "^7.2.0", + "mkdirp": "^1.0.4", "physical-cpu-count": "^2.0.0", - "source-map-support": "^0.5.19", - "ts-loader": "^9.2.2", - "ts-node": "^6.2.0", - "typescript": "~4.2.4", - "webpack": "^5.59.1", + "ts-loader": "^9.2.6", + "ts-node": "^10.4.0", + "typescript": "~4.4.4", + "webpack": "^5.61.0", "webpack-cli": "^4.9.1" }, "funding": { @@ -38,163 +37,90 @@ "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, + "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==", "engines": { - "node": ">=0.8.0" + "node": ">= 12" } }, - "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, + "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==", "dependencies": { - "has-flag": "^3.0.0" + "@cspotcode/source-map-consumer": "0.8.0" }, "engines": { - "node": ">=4" + "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", - "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.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", - "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "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", - "globals": "^12.1.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/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "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, - "dependencies": { - "type-fest": "^0.8.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4" } }, - "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==", + "node_modules/@humanwhocodes/config-array": { + "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", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, "engines": { - "node": ">=8" + "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/object-schema": { + "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": { - "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,31 +128,51 @@ } }, "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": { "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==" + }, + "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==" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "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==" + }, "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": "*", @@ -234,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": "*", @@ -256,36 +202,35 @@ "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==", - "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.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.25.0.tgz", - "integrity": "sha512-Qfs3dWkTMKkKwt78xp2O/KZQB8MPS1UQ5D3YW2s6LQWBE1074BE+Rym+b1pXZIX3M3fSvPUDaCvZLKV2ylVYYQ==", + "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.25.0", - "@typescript-eslint/scope-manager": "4.25.0", - "debug": "^4.1.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", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "ignore": "^5.1.8", + "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": { @@ -294,20 +239,20 @@ } }, "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": "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.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.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", @@ -318,25 +263,25 @@ } }, "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": "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.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "debug": "^4.1.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": { @@ -345,16 +290,16 @@ } }, "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": "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.25.0", - "@typescript-eslint/visitor-keys": "4.25.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", @@ -362,12 +307,12 @@ } }, "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": "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", @@ -375,21 +320,21 @@ } }, "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": "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.25.0", - "@typescript-eslint/visitor-keys": "4.25.0", - "debug": "^4.1.1", - "globby": "^11.0.1", - "is-glob": "^4.0.1", - "semver": "^7.3.2", - "tsutils": "^3.17.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", @@ -402,16 +347,16 @@ } }, "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": "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.25.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", @@ -613,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" }, @@ -624,15 +568,32 @@ "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.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" } }, + "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==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -668,9 +629,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" @@ -691,14 +652,16 @@ "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==" + }, "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", @@ -709,24 +672,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", - "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", @@ -734,9 +679,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" } @@ -764,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" @@ -787,10 +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==", - "dev": true + "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", @@ -802,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", @@ -812,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", @@ -869,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": { @@ -886,6 +830,11 @@ "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==" + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -901,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" @@ -918,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": { @@ -957,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": { @@ -1033,36 +976,36 @@ } }, "node_modules/eslint": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.27.0.tgz", - "integrity": "sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA==", + "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.1", + "@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.0.0", + "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", @@ -1070,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" }, @@ -1082,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" @@ -1102,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": { @@ -1183,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" @@ -1204,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" @@ -1240,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", @@ -1269,22 +1223,33 @@ "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" } }, + "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", @@ -1304,9 +1269,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" @@ -1363,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": { @@ -1399,9 +1364,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", @@ -1419,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": { @@ -1437,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" @@ -1452,9 +1417,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", @@ -1471,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": { @@ -1517,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" @@ -1542,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", @@ -1592,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" @@ -1612,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" @@ -1655,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": { @@ -1707,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" @@ -1787,34 +1730,16 @@ "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", - "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", @@ -1831,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", @@ -1863,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" @@ -1904,22 +1828,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": { @@ -1941,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": { @@ -2000,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" @@ -2026,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", @@ -2110,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", @@ -2191,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" @@ -2203,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" @@ -2214,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", @@ -2410,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": { @@ -2424,28 +2324,10 @@ "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", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2454,39 +2336,18 @@ "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" } }, - "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" @@ -2525,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" @@ -2591,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", @@ -2653,9 +2474,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", @@ -2672,32 +2493,49 @@ } }, "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==", - "dev": true, - "dependencies": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", + "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", + "dependencies": { + "@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" }, - "engines": { - "node": ">=4.2.0" + "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/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "engines": { "node": ">=0.3.1" } @@ -2748,10 +2586,9 @@ } }, "node_modules/typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", - "dev": true, + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2789,9 +2626,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.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", @@ -2878,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", @@ -2894,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", @@ -2915,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", @@ -2979,182 +2789,126 @@ "dev": true }, "node_modules/yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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, + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } } }, "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" - } + "@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==" }, - "@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, + "@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==", "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": "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.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", - "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "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", - "globals": "^12.1.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": { - "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==", + "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.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", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "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": { - "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" } }, + "@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "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==" + }, + "@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "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==" + }, "@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": "*", @@ -3162,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": "*", @@ -3184,92 +2938,91 @@ "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==", - "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.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.25.0.tgz", - "integrity": "sha512-Qfs3dWkTMKkKwt78xp2O/KZQB8MPS1UQ5D3YW2s6LQWBE1074BE+Rym+b1pXZIX3M3fSvPUDaCvZLKV2ylVYYQ==", + "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.25.0", - "@typescript-eslint/scope-manager": "4.25.0", - "debug": "^4.1.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", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" } }, "@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": "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.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.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" } }, "@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": "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.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "debug": "^4.1.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.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": "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.25.0", - "@typescript-eslint/visitor-keys": "4.25.0" + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/visitor-keys": "5.3.1" } }, "@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": "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.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.25.0.tgz", - "integrity": "sha512-1B8U07TGNAFMxZbSpF6jqiDs1cVGO0izVkf18Q/SPcUAc9LhHxzvSowXDTvkHMWUVuPpagupaW63gB6ahTXVlg==", + "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.25.0", - "@typescript-eslint/visitor-keys": "4.25.0", - "debug": "^4.1.1", - "globby": "^11.0.1", - "is-glob": "^4.0.1", - "semver": "^7.3.2", - "tsutils": "^3.17.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.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.25.0.tgz", - "integrity": "sha512-AmkqV9dDJVKP/TcZrbf6s6i1zYXt5Hl8qOLrRDTFfRNae4+LB8A4N3i+FLZPW85zIxRy39BgeWOfMS3HoH5ngg==", + "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.25.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.3.1", + "eslint-visitor-keys": "^3.0.0" } }, "@webassemblyjs/ast": { @@ -3454,18 +3207,29 @@ "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.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": {} }, + "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==" + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -3492,9 +3256,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": { @@ -3506,14 +3270,16 @@ "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==" + }, "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", @@ -3521,18 +3287,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", - "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", @@ -3540,9 +3294,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", @@ -3564,23 +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==", - "dev": true + "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", @@ -3589,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", @@ -3637,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": { @@ -3654,6 +3407,11 @@ "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==" + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3666,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": { @@ -3705,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": { @@ -3760,36 +3512,36 @@ "dev": true }, "eslint": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.27.0.tgz", - "integrity": "sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA==", + "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.1", + "@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.0.0", + "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", @@ -3797,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": { @@ -3817,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", @@ -3874,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 } } @@ -3891,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 } } @@ -3917,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", @@ -3940,17 +3701,27 @@ "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" + }, + "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": { @@ -3972,9 +3743,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" @@ -4019,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": { @@ -4049,9 +3820,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", @@ -4063,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": { @@ -4078,18 +3849,18 @@ "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" } }, "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", @@ -4098,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": { @@ -4136,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": { @@ -4152,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", @@ -4190,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" @@ -4204,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" @@ -4235,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": { @@ -4274,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": { @@ -4339,34 +4089,16 @@ "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", - "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", @@ -4380,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", @@ -4406,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": { @@ -4435,20 +4166,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", @@ -4469,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": { @@ -4516,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": { @@ -4531,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": { @@ -4595,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", @@ -4644,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": { @@ -4781,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": { @@ -4792,57 +4503,27 @@ "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", - "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" } }, - "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": { @@ -4866,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": { @@ -4926,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", @@ -4955,9 +4601,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", @@ -4967,26 +4613,28 @@ } }, "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==", - "dev": true, + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", + "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", "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": { "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" } } }, @@ -5021,10 +4669,9 @@ "dev": true }, "typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", - "dev": true + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==" }, "uri-js": { "version": "4.4.1", @@ -5052,9 +4699,9 @@ } }, "webpack": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.59.1.tgz", - "integrity": "sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ==", + "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", @@ -5081,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": { @@ -5118,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", @@ -5133,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", @@ -5182,16 +4808,9 @@ "dev": true }, "yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", - "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 + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" } } } diff --git a/package.json b/package.json index e1116c66ea..0453808fb6 100644 --- a/package.json +++ b/package.json @@ -21,24 +21,24 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "101.0.0-nightly.20210904", - "long": "^4.0.0", - "source-map-support": "^0.5.19", - "ts-node": "^6.2.0" + "binaryen": "102.0.0-nightly.20211028", + "long": "^5.1.0", + "source-map-support": "^0.5.20", + "ts-node": "^10.4.0" }, "devDependencies": { - "@types/node": "^15.6.1", - "@typescript-eslint/eslint-plugin": "^4.9.1", - "@typescript-eslint/parser": "^4.9.1", + "@types/node": "^16.11.6", + "@typescript-eslint/eslint-plugin": "^5.3.1", + "@typescript-eslint/parser": "^5.3.1", "diff": "^5.0.0", - "eslint": "^7.15.0", - "glob": "^7.1.6", + "eslint": "^8.2.0", + "glob": "^7.2.0", + "mkdirp": "^1.0.4", "physical-cpu-count": "^2.0.0", - "source-map-support": "^0.5.19", - "ts-loader": "^9.2.2", - "ts-node": "^6.2.0", - "typescript": "~4.2.4", - "webpack": "^5.59.1", + "ts-loader": "^9.2.6", + "ts-node": "^10.4.0", + "typescript": "~4.4.4", + "webpack": "^5.61.0", "webpack-cli": "^4.9.1" }, "type": "commonjs", @@ -85,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/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..29b73a9702 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. */ @@ -2969,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( @@ -3388,14 +3392,16 @@ 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.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); @@ -3406,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 @@ -3766,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 ... @@ -10294,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 d685df7409..c40c23686c 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); @@ -919,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); @@ -1376,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/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index 5763561632..a0f520d8d6 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; @@ -617,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/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/module.ts b/src/module.ts index 4c1c379f9c..e4f871de7d 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[], @@ -1579,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, @@ -2258,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"); @@ -2267,6 +2308,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 +2316,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 +2338,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 +2351,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 +2396,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 +2412,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 +2436,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"); @@ -2460,7 +2508,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; @@ -2963,12 +3011,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 { @@ -2986,8 +3036,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; } @@ -2996,11 +3050,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; } @@ -3009,11 +3067,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; } @@ -3024,11 +3086,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; } @@ -3036,18 +3102,19 @@ 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); - } - 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 <= 0xFFFF) { - len += 3; - } else { + } else if ( + (c1 & 0xFC00) === 0xD800 && i + 1 < k && + (str.charCodeAt(i + 1) & 0xFC00) === 0xDC00 + ) { + i++; len += 4; + } else { + len += 3; } } return len; @@ -3055,41 +3122,60 @@ 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 { + for (let i = 0, k = str.length; i < k; ++i) { + 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); + } } } - 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 { 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/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; 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) ) ) { 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/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/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/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 d027d8d967..4e2c6c345d 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; @@ -77,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 }, @@ -136,12 +137,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) { 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/compiler/NonNullable.optimized.wat b/tests/compiler/NonNullable.optimized.wat index 74e9f4ab52..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 @@ -45,7 +46,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,73 +58,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -132,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/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 7974350127..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 @@ -371,74 +371,71 @@ 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.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1404 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - block $__inlined_func$assert-nonnull/testAll - block $folding-inner0 - local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - br_if $folding-inner0 - local.get $1 - local.get $0 - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$assert-nonnull/testAll - end - i32.const 1056 - i32.const 1120 - i32.const 27 - i32.const 10 - call $~lib/builtins/abort - unreachable + 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 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + 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 - local.get $0 - 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 ) @@ -449,74 +446,71 @@ 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.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1404 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - block $__inlined_func$assert-nonnull/testAll2 - block $folding-inner0 - local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - br_if $folding-inner0 - local.get $1 - local.get $0 - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$assert-nonnull/testAll2 - end - i32.const 1056 - i32.const 1120 - i32.const 31 - i32.const 10 - call $~lib/builtins/abort - unreachable + 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 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + 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 - local.get $0 - 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 ) 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/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/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/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 3e37054af4..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 @@ -101,7 +102,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 @@ -113,73 +114,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -188,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/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.optimized.wat b/tests/compiler/call-super.optimized.wat index 2d3cd0117c..f6c479de9e 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 @@ -833,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 - global.set $~lib/rt/itcms/iter - br $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 - 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.const 1 + global.set $~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 + 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/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,271 +794,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1245,12 +1084,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 +1105,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 +1123,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1306,54 +1144,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 +1196,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 +1213,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 +1249,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 +1268,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1443,7 +1278,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1461,12 +1296,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 @@ -1526,19 +1361,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 +1382,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 +1402,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 +1414,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 +1536,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1733,7 +1568,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 @@ -1763,183 +1598,186 @@ (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-inner1 - 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 + 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-inner1 - 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-inner1 - 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.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 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.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 + 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 - block $folding-inner00 + block $__inlined_func$call-super/test2 global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner00 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -1951,7 +1789,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner00 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -1973,7 +1811,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner00 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -2055,14 +1893,17 @@ 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 + br $__inlined_func$call-super/test2 + 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 1596 i32.lt_s - br_if $folding-inner00 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -2074,7 +1915,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner00 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2093,7 +1934,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner00 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -2173,7 +2014,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner00 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -2185,7 +2026,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner00 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2204,7 +2045,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner00 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -2272,7 +2113,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner00 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -2284,7 +2125,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner00 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2303,7 +2144,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner00 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -2374,4 +2215,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index c5905141bf..3cd4a32f81 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)) @@ -1533,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.optimized.wat b/tests/compiler/class-implements.optimized.wat index b993737908..f4feb9b159 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 @@ -855,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 - global.set $~lib/rt/itcms/iter - br $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 - 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 + i32.const 1 + global.set $~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 local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -902,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1122,9 +964,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 +982,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 +998,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 @@ -1211,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 @@ -1228,17 +1070,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 +1093,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 +1110,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,22 +1145,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1327,19 +1169,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1424,7 +1266,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,7 +1384,6 @@ ) (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 @@ -1566,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 @@ -1590,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 @@ -1712,4 +1553,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/class-implements.untouched.wat b/tests/compiler/class-implements.untouched.wat index 20b4df005b..3d1f967fd7 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)) @@ -1543,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.optimized.wat b/tests/compiler/class-overloading-cast.optimized.wat index 072354d642..3ad36c7a3a 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 @@ -869,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 - global.set $~lib/rt/itcms/iter - br $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 - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and + i32.const 1 + global.set $~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 + 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|1 + 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 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -916,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1136,9 +978,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 +996,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 +1012,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 @@ -1225,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 @@ -1242,17 +1084,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 +1107,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 +1124,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,22 +1159,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1341,19 +1183,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1418,6 +1260,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -1440,7 +1283,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 @@ -1449,76 +1292,74 @@ i32.shr_u i32.ne if - i32.const 0 - return - end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 + i32.const 8 + i32.add + local.set $2 local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -1527,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) @@ -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 @@ -1744,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 @@ -1776,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 @@ -1813,24 +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 + 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 + 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.set $1 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 - local.tee $1 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1488 i32.store offset=4 local.get $1 @@ -1896,22 +1742,21 @@ local.get $0 global.set $class-overloading-cast/c global.get $~lib/memory/__stack_pointer - local.tee $0 global.get $class-overloading-cast/c - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1600 i32.store offset=12 - local.get $1 + 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 @@ -2004,4 +1849,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/class-overloading-cast.untouched.wat b/tests/compiler/class-overloading-cast.untouched.wat index 19a34533b6..1bcc0ca549 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)) @@ -1543,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.optimized.wat b/tests/compiler/class-overloading.optimized.wat index 5f2453d86b..f715c318b9 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 @@ -893,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 - global.set $~lib/rt/itcms/iter - br $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 - 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 + i32.const 1 + global.set $~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 local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -940,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1160,9 +1002,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 +1020,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 +1036,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,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 @@ -1266,17 +1108,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 +1131,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 +1148,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,22 +1183,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1365,19 +1207,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1442,6 +1284,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -1464,7 +1307,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 @@ -1476,73 +1319,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -1551,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) @@ -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,1275 +1552,1288 @@ (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 1932 - i32.lt_s - br_if $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - i32.const 18316 + i32.const 8 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 + global.set $~lib/memory/__stack_pointer + 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@virtual21 - block $default22 - block $case223 - block $case124 - block $case025 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case025 $case124 $case025 $case025 $case223 $default22 + 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@virtual21 + 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@virtual21 + 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@virtual21 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@virtual30 - block $default31 - block $case232 - block $case133 - block $case034 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case034 $case133 $case034 $case034 $case232 $default31 + 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@virtual30 + 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@virtual30 + 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@virtual30 end - i32.const 1488 - global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1520 - i32.store offset=4 - local.get $1 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 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@virtual39 - block $default40 - block $case241 - block $case142 - block $case043 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case043 $case142 $case043 $case043 $case241 $default40 + 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@virtual39 + 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@virtual39 + 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@virtual39 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@virtual48 - block $default49 - block $case250 - block $case151 - block $case052 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case052 $case151 $case052 $case052 $case250 $default49 + 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@virtual48 + 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@virtual48 + 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@virtual48 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@virtual57 - block $default58 - block $case259 - block $case160 - block $case061 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case061 $case160 $case061 $case061 $case259 $default58 + 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@virtual57 + 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@virtual57 + 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@virtual57 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 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 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual67 + end + i32.const 1648 + 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 + 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 - 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@virtual66 - block $default67 - block $case268 - block $case169 - block $case070 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case070 $case169 $case070 $case070 $case268 $default67 + 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@virtual66 + 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@virtual66 + 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@virtual66 end - i32.const 1488 - global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1520 - i32.store offset=4 - local.get $1 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1932 - i32.lt_s - br_if $folding-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@virtual75 - block $default76 - block $case277 - block $case178 - block $case079 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case079 $case178 $case079 $case079 $case277 $default76 - end - i32.const 1520 - global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual75 - end - i32.const 1616 - global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual75 - end - i32.const 1648 - global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual75 + 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 1488 + 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@virtual84 - block $default85 - block $case286 - block $case187 - block $case088 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case088 $case187 $case088 $case088 $case286 $default85 + 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@virtual84 + 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@virtual84 + 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@virtual84 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@virtual93 - block $default94 - block $case295 - block $case196 - block $case097 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case097 $case196 $case097 $case097 $case295 $default94 + 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@virtual93 + 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@virtual93 + 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@virtual93 end - i32.const 1488 - global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1648 - i32.store offset=4 - local.get $1 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 146 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1932 - i32.lt_s - br_if $folding-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 $default102 - block $case1103 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 10 - i32.ne - 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.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 $case1103 - br $default102 + 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 + 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.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@virtual105 - block $default106 - block $case1107 - 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 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 12 - i32.eq - br_if $case1107 - br $default106 + 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 1680 + 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 - i32.const 1712 - global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@virtual105 + 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 - 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 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 local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 14 - i32.eq + 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.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 - 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 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 + 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 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $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.sub i32.load - i32.const 15 - i32.ne + i32.const 14 + i32.eq if - i32.const 1744 - i32.const 1552 - i32.const 186 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 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 - 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 + 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 @@ -2988,7 +2844,6 @@ ) (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 @@ -3012,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 @@ -3036,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 @@ -3130,4 +2985,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index 2facadbbcd..b77ff017c3 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)) @@ -1549,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.optimized.wat b/tests/compiler/class.optimized.wat index 13f507fb7a..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))) @@ -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 @@ -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 @@ -222,30 +220,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 +256,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 +271,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 +301,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 +338,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 +348,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 +486,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -527,7 +497,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -547,44 +517,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 +563,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -604,20 +573,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 +614,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 +641,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 +658,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 +687,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -730,7 +699,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -767,8 +736,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 @@ -845,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 @@ -892,271 +934,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1234,183 +1201,7 @@ 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 $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - 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 $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - 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) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1472,18 +1263,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1494,54 +1284,51 @@ call $~lib/builtins/abort unreachable end + local.get $5 + 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 - 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 @@ -1549,16 +1336,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 +1354,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1575,9 +1362,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 +1375,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 +1390,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,158 +1408,275 @@ 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 - call $~lib/rt/tlsf/insertBlock - else + 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 0 + i32.store local.get $3 - local.get $4 - i32.const -2 - i32.and + 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.add - local.get $3 - i32.load - i32.const -4 i32.and + i32.const 24 i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 - 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.get $1 - i32.or - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $3 - i32.or - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $3 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $3 - i32.const 20 - i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + local.tee $3 + i32.add + local.set $1 local.get $0 - i32.const 20 + local.get $3 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.set $0 + loop $while-continue|0 local.get $0 - i32.const 3 - i32.eq - select + i32.const 32 + i32.ge_u if local.get $1 - call $~lib/rt/itcms/Object#makeGray + 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) @@ -1795,7 +1699,7 @@ i32.const 4 i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 @@ -1813,57 +1717,57 @@ i32.const 16 i32.const 5 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 $0 + 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 $1 + local.tee $0 i32.store offset=4 - local.get $1 - i32.const 32 - call $~lib/memory/memory.fill + 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 i32.const 32 i32.store offset=8 - local.get $0 + 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 - local.get $0 i32.store local.get $2 - local.get $0 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -1898,7 +1802,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 return end unreachable @@ -1908,7 +1816,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 +1898,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/class.untouched.wat b/tests/compiler/class.untouched.wat index ddea6b07eb..e27fc15a42 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)) @@ -1645,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 @@ -2721,7 +2726,7 @@ if i32.const 432 i32.const 480 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -2743,10 +2748,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.optimized.wat b/tests/compiler/constructor.optimized.wat index eb2ba60aac..b6d916a28a 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 @@ -910,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 - global.set $~lib/rt/itcms/iter - br $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 - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 + i32.const 1 + global.set $~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 + 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/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,271 +871,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 +1161,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 +1182,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 +1200,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1383,54 +1221,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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.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 +1273,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 +1290,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 +1326,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 +1345,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1520,7 +1355,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1538,12 +1373,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 @@ -1603,19 +1438,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 +1459,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 +1479,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 +1491,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,7 +1613,7 @@ end end end - local.get $3 + local.get $2 ) (func $start:constructor (local $0 i32) @@ -2199,7 +2034,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 +2065,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index 89a0c648ba..e6cb986975 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)) @@ -1545,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.optimized.wat b/tests/compiler/do.optimized.wat index ddba997211..a8059a0de2 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 @@ -833,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 - global.set $~lib/rt/itcms/iter - br $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 - 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 + i32.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -880,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1100,9 +942,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 +960,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 +976,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 @@ -1155,13 +997,20 @@ (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.const 10 local.set $0 loop $do-loop|0 - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 local.get $0 i32.const 1 i32.sub @@ -1177,7 +1026,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 10 i32.ne if @@ -1190,14 +1039,14 @@ end i32.const 10 local.set $0 - loop $do-loop|00 + loop $do-loop|01 local.get $0 local.tee $1 i32.const 1 i32.sub local.set $0 local.get $1 - br_if $do-loop|00 + br_if $do-loop|01 end local.get $0 i32.const -1 @@ -1210,24 +1059,22 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $2 i32.const 10 local.set $0 - loop $do-loop|01 + loop $do-loop|03 local.get $0 i32.const 1 i32.sub local.set $0 - local.get $3 + local.get $6 i32.const 1 i32.add - local.set $3 + local.set $6 loop $do-loop|1 - local.get $2 + local.get $10 i32.const 1 i32.add - local.set $2 + local.set $10 local.get $0 i32.const 1 i32.sub @@ -1243,7 +1090,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $10 i32.const 9 i32.ne if @@ -1255,7 +1102,7 @@ unreachable end local.get $0 - br_if $do-loop|01 + br_if $do-loop|03 end local.get $0 if @@ -1266,7 +1113,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const 1 i32.ne if @@ -1277,7 +1124,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $10 i32.const 9 i32.ne if @@ -1288,18 +1135,16 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $do-loop|02 - local.get $0 + loop $do-loop|05 + local.get $5 i32.const 1 i32.add - local.tee $0 + local.tee $5 i32.const 10 i32.ne - br_if $do-loop|02 + br_if $do-loop|05 end - local.get $0 + local.get $5 i32.const 10 i32.ne if @@ -1310,18 +1155,16 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $do-loop|03 - local.get $0 + loop $do-loop|07 + local.get $4 i32.const 1 i32.add - local.tee $0 + local.tee $4 i32.const 10 i32.ne - br_if $do-loop|03 + br_if $do-loop|07 end - local.get $0 + local.get $4 i32.const 10 i32.ne if @@ -1332,21 +1175,19 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $do-loop|04 - local.get $0 + loop $do-loop|015 + local.get $9 i32.const 1 i32.add - local.tee $0 + local.tee $9 i32.const 10 i32.ne i32.const 0 - local.get $0 + local.get $9 select - br_if $do-loop|04 + br_if $do-loop|015 end - local.get $0 + local.get $9 i32.const 10 i32.ne if @@ -1357,35 +1198,31 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - i32.const 0 - local.set $2 - loop $do-loop|06 - local.get $0 + loop $do-loop|017 + local.get $8 i32.const 1 i32.add - local.tee $0 + local.tee $8 i32.const 10 i32.ne if - loop $do-loop|18 - local.get $2 + loop $do-loop|120 + local.get $7 i32.const 1 i32.add - local.tee $2 + local.tee $7 i32.const 10 i32.rem_s i32.const 0 - local.get $2 + local.get $7 select - br_if $do-loop|18 + br_if $do-loop|120 end - local.get $0 - br_if $do-loop|06 + local.get $8 + br_if $do-loop|017 end end - local.get $0 + local.get $8 i32.const 10 i32.ne if @@ -1396,7 +1233,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $7 i32.const 90 i32.ne if @@ -1439,8 +1276,6 @@ 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 @@ -1451,17 +1286,17 @@ 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|08 + local.get $3 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 10 i32.eq if @@ -1474,9 +1309,9 @@ i32.store end local.get $0 - br_if $do-loop|09 + br_if $do-loop|08 end - local.get $2 + local.get $3 i32.const 10 i32.ne if @@ -1500,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 @@ -1511,15 +1344,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 i32.store - loop $do-loop|07 - block $do-break|08 + loop $do-loop|012 + block $do-break|011 local.get $2 i32.const 1 i32.add @@ -1529,10 +1362,10 @@ if i32.const 0 local.set $0 - br $do-break|08 + br $do-break|011 end call $do/Ref#constructor - br_if $do-loop|07 + br_if $do-loop|012 end end local.get $2 @@ -1622,7 +1455,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 +1488,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1692,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 @@ -1709,17 +1542,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 +1565,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 @@ -1749,15 +1582,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 +1617,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 $1 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 +1641,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $1 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 @@ -1850,8 +1683,8 @@ i32.load offset=8 local.set $3 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 @@ -1877,16 +1710,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 ) ) diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index 7320a8c2e2..92a47f874d 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)) @@ -1942,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 @@ -2925,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.optimized.wat b/tests/compiler/empty-exportruntime.optimized.wat index 6cffd17c15..9973399dfc 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 @@ -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 @@ -228,30 +226,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 +262,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 +277,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 +307,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 +344,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 +354,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 +492,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -533,7 +503,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -553,44 +523,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 +569,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -610,20 +579,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 +620,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 +647,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 +664,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 +693,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -736,7 +705,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -773,8 +742,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 @@ -851,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 @@ -898,271 +940,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1263,12 +1230,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 +1251,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 +1269,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1324,54 +1290,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 +1342,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 +1359,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 +1395,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 +1414,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1461,7 +1424,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1479,12 +1442,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 @@ -1544,19 +1507,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 +1528,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 +1548,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 +1560,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 +1682,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 +1746,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 +1764,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.get $0 + local.set $2 + local.get $1 global.get $~lib/rt/itcms/white - local.get $2 + local.get $0 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 +1849,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 +1889,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-exportruntime.untouched.wat b/tests/compiler/empty-exportruntime.untouched.wat index 1d8dc9fe14..bcf84011f0 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)) @@ -1539,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 @@ -2452,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.optimized.wat b/tests/compiler/empty-new.optimized.wat index cf783e1948..a4ef4381ca 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 @@ -829,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 - global.set $~lib/rt/itcms/iter - br $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 - 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 + i32.const 1 + global.set $~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 + 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 - global.set $~lib/rt/itcms/iter + 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 @@ -876,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1096,9 +938,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 +956,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 +972,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 +1008,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 @@ -1243,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 @@ -1266,11 +1108,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 +1125,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 +1143,7 @@ end end local.get $2 - local.get $1 + local.get $0 i32.const 16 i32.shl memory.size @@ -1340,17 +1182,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 +1201,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 +1241,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 +1271,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/empty-new.untouched.wat b/tests/compiler/empty-new.untouched.wat index 0cbc855010..8f30e3f8cd 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)) @@ -1532,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.optimized.wat b/tests/compiler/exports.optimized.wat index aeb72df942..9acd68bb8b 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 @@ -883,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 @@ -930,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1150,9 +992,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 +1010,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 +1026,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 @@ -1239,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 @@ -1256,17 +1098,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 +1121,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 +1138,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,22 +1173,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1355,19 +1197,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1427,13 +1269,14 @@ local.get $1 i32.const 20 i32.add + local.tee $0 local.tee $1 i32.const 0 i32.store8 local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1444,17 +1287,17 @@ local.get $1 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 ) (func $export/mul (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -1501,7 +1344,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 @@ -1768,4 +1611,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index e7b3081595..8d3f9103b0 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)) @@ -1596,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.optimized.wat b/tests/compiler/exportstar-rereexport.optimized.wat index c5d90544eb..71db4dbb90 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 @@ -884,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 - global.set $~lib/rt/itcms/iter - br $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 - 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.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -931,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1151,9 +993,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 +1011,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 +1027,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 +1072,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 @@ -1391,7 +1233,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1428,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 @@ -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 $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 @@ -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 $1 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 $1 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 @@ -1586,8 +1428,8 @@ i32.load offset=8 local.set $3 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 @@ -1616,13 +1458,14 @@ local.get $0 i32.const 20 i32.add + local.tee $0 local.tee $1 i32.const 0 i32.store8 local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1633,29 +1476,178 @@ local.get $1 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $3 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $4 - local.get $1 + local.get $2 + 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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 ) ) diff --git a/tests/compiler/exportstar-rereexport.untouched.wat b/tests/compiler/exportstar-rereexport.untouched.wat index 3e97865cd4..b78191f004 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)) @@ -1577,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.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 33fe5c45e3..b33d051df5 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -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 @@ -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 @@ -228,30 +226,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 +262,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 +277,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 +307,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 +344,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 +354,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 +492,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -533,7 +503,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -553,44 +523,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 +569,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -610,20 +579,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 +620,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 +647,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 +664,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 +693,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -736,7 +705,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -773,8 +742,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 @@ -851,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 @@ -898,271 +940,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1204,215 +1171,39 @@ i32.add i32.shl i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - 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 $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - 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 $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - 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 + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 end end ) @@ -1478,18 +1269,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1500,54 +1290,51 @@ call $~lib/builtins/abort unreachable end + local.get $5 + 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 - 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 +1342,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 +1360,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1581,9 +1368,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 +1381,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 +1396,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 +1414,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 + local.set $3 + local.get $2 global.get $~lib/rt/itcms/white local.get $1 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,73 +1504,185 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if + 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.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 + 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 - local.tee $0 - i32.load offset=4 - i32.const 3 + 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 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 + loop $while-continue|0 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 + i32.const 32 + i32.ge_u if local.get $1 - call $~lib/rt/itcms/Object#makeGray + 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) @@ -1798,17 +1697,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 +1853,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 +1880,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 +1891,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 +1902,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 +1916,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 +1946,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 +1971,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 +1982,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 +1993,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 +2007,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 +2033,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 +2058,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 +2069,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 +2080,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 +2094,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 +2131,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 - i32.const 2 - i32.add - local.tee $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 $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 $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.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 @@ -2373,59 +2250,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 +2313,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 +2324,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 +2342,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 @@ -2506,58 +2377,55 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) i32.const 1180 i32.load - local.tee $8 + local.tee $7 i32.const 1 i32.add - local.tee $7 - local.tee $5 + local.tee $8 i32.const 1176 i32.load - local.tee $10 + local.tee $1 i32.const 2 i32.shr_u i32.gt_u if - local.get $5 + local.get $8 i32.const 268435455 i32.gt_u 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 $10 + local.get $1 i32.const 1 i32.shl - local.tee $4 + local.tee $1 i32.const 1073741820 - local.get $4 + local.get $1 i32.const 1073741820 i32.lt_u select - local.tee $2 - local.get $5 + local.tee $1 + local.get $8 i32.const 8 - local.get $5 + local.get $8 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $4 + local.tee $2 + local.get $1 local.get $2 - local.get $4 i32.gt_u select local.tee $9 - local.tee $11 i32.const 1168 i32.load local.tee $6 @@ -2573,106 +2441,106 @@ i32.le_u if local.get $3 - local.get $11 + local.get $9 i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $11 + local.get $9 local.get $3 i32.load offset=12 call $~lib/rt/itcms/__new local.tee $5 - local.set $4 - local.get $11 + local.set $2 + local.get $9 local.get $3 i32.load offset=16 - local.tee $2 - local.get $2 - local.get $11 + local.tee $3 + local.get $3 + local.get $9 i32.gt_u select - local.set $11 + local.set $10 block $~lib/util/memory/memmove|inlined.0 local.get $1 - local.get $4 + local.get $2 i32.eq br_if $~lib/util/memory/memmove|inlined.0 local.get $1 - local.get $4 + local.get $2 i32.sub - local.get $11 + local.get $10 i32.sub i32.const 0 - local.get $11 + local.get $10 i32.const 1 i32.shl i32.sub i32.le_u if - local.get $4 + local.get $2 local.get $1 - local.get $11 + local.get $10 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end local.get $1 - local.get $4 + local.get $2 i32.gt_u if local.get $1 i32.const 7 i32.and - local.get $4 + local.get $2 i32.const 7 i32.and i32.eq if loop $while-continue|0 - local.get $4 + local.get $2 i32.const 7 i32.and if - local.get $11 + local.get $10 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $11 + local.get $10 i32.const 1 i32.sub - local.set $11 - local.get $4 + local.set $10 + local.get $2 local.tee $3 i32.const 1 i32.add - local.set $4 + local.set $2 local.get $1 - local.tee $2 + local.tee $4 i32.const 1 i32.add local.set $1 local.get $3 - local.get $2 + local.get $4 i32.load8_u i32.store8 br $while-continue|0 end end loop $while-continue|1 - local.get $11 + local.get $10 i32.const 8 i32.ge_u if - local.get $4 + local.get $2 local.get $1 i64.load i64.store - local.get $11 + local.get $10 i32.const 8 i32.sub - local.set $11 - local.get $4 + local.set $10 + local.get $2 i32.const 8 i32.add - local.set $4 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2682,26 +2550,26 @@ end end loop $while-continue|2 - local.get $11 + local.get $10 if - local.get $4 + local.get $2 local.tee $3 i32.const 1 i32.add - local.set $4 + local.set $2 local.get $1 - local.tee $2 + local.tee $4 i32.const 1 i32.add local.set $1 local.get $3 - local.get $2 + local.get $4 i32.load8_u i32.store8 - local.get $11 + local.get $10 i32.const 1 i32.sub - local.set $11 + local.set $10 br $while-continue|2 end end @@ -2709,29 +2577,29 @@ local.get $1 i32.const 7 i32.and - local.get $4 + local.get $2 i32.const 7 i32.and i32.eq if loop $while-continue|3 - local.get $4 - local.get $11 + local.get $2 + local.get $10 i32.add i32.const 7 i32.and if - local.get $11 + local.get $10 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - local.get $11 + local.get $10 i32.const 1 i32.sub - local.tee $11 + local.tee $10 + local.get $2 i32.add local.get $1 - local.get $11 + local.get $10 i32.add i32.load8_u i32.store8 @@ -2739,18 +2607,18 @@ end end loop $while-continue|4 - local.get $11 + local.get $10 i32.const 8 i32.ge_u if - local.get $4 - local.get $11 + local.get $10 i32.const 8 i32.sub - local.tee $11 + local.tee $10 + local.get $2 i32.add local.get $1 - local.get $11 + local.get $10 i32.add i64.load i64.store @@ -2759,16 +2627,16 @@ end end loop $while-continue|5 - local.get $11 + local.get $10 if - local.get $4 - local.get $11 + local.get $10 i32.const 1 i32.sub - local.tee $11 + local.tee $10 + local.get $2 i32.add local.get $1 - local.get $11 + local.get $10 i32.add i32.load8_u i32.store8 @@ -2781,13 +2649,6 @@ 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 @@ -2797,10 +2658,12 @@ i32.const 1172 local.get $1 i32.store - i32.const 1168 local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end i32.const 1176 local.get $9 @@ -2808,18 +2671,20 @@ end i32.const 1172 i32.load - local.get $8 + local.get $7 i32.const 2 i32.shl i32.add local.get $0 i32.store - i32.const 1168 local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end i32.const 1180 - local.get $7 + local.get $8 i32.store ) (func $~lib/array/Array~visit (param $0 i32) @@ -2834,18 +2699,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 +2721,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 +2760,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,7 +2769,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 @@ -3003,10 +2872,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 @@ -3035,4 +2900,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-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index 09f205cc84..e839a9c359 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)) @@ -1541,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 @@ -3758,7 +3763,7 @@ if i32.const 592 i32.const 640 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -3802,14 +3807,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.optimized.wat b/tests/compiler/extends-recursive.optimized.wat index 9647a38b22..f5b4813af7 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 @@ -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 @@ -217,30 +215,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 +251,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 +266,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 +296,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 +333,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 +343,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 +481,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -522,7 +492,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -542,44 +512,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 +558,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -599,20 +568,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 +609,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 +636,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 +653,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 +682,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -725,7 +694,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -762,8 +731,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 @@ -840,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 @@ -887,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1107,9 +1077,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 +1095,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 +1111,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 @@ -1196,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 @@ -1213,17 +1183,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 +1206,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 +1223,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,22 +1258,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1312,19 +1282,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1384,13 +1354,14 @@ local.get $1 i32.const 20 i32.add + local.tee $0 local.tee $1 i32.const 0 i32.store8 local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1401,72 +1372,17 @@ local.get $1 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 - ) - (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 +1406,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 +1498,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,7 +1555,6 @@ ) (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 @@ -1628,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 @@ -1651,13 +1612,11 @@ local.get $0 i32.const 0 i32.store - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -1678,4 +1637,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/extends-recursive.untouched.wat b/tests/compiler/extends-recursive.untouched.wat index f66a3affff..1e77d96a2a 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)) @@ -1537,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/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..95b3156975 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,11 @@ 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 @@ -766,52 +749,49 @@ 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.get $3 i32.const 4 i32.add i32.const 15 @@ -894,7 +874,7 @@ local.get $2 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub local.tee $4 i32.const 16 @@ -904,23 +884,23 @@ local.get $2 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.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -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 @@ -1022,15 +1015,23 @@ if i32.const 0 i32.const 1184 - i32.const 59 + i32.const 67 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store16 @@ -1043,15 +1044,23 @@ if i32.const 0 i32.const 1184 - i32.const 69 + i32.const 77 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store @@ -1064,15 +1073,23 @@ if i32.const 0 i32.const 1184 - i32.const 79 + i32.const 87 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i64.const 42 i64.store @@ -1085,15 +1102,23 @@ if i32.const 0 i32.const 1184 - i32.const 89 + i32.const 97 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store @@ -1106,15 +1131,23 @@ if i32.const 0 i32.const 1184 - i32.const 99 + i32.const 107 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i64.const 42 i64.store @@ -1127,7 +1160,7 @@ if i32.const 0 i32.const 1184 - i32.const 109 + i32.const 117 i32.const 5 call $~lib/builtins/abort unreachable @@ -1136,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 diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index bc05a86e76..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))) @@ -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 @@ -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 @@ -235,30 +233,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 +269,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 +284,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 +314,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 +351,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 +361,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 +499,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -540,7 +510,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -560,44 +530,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 +576,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -617,20 +586,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 +627,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 +654,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 +671,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 +700,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -743,7 +712,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -780,8 +749,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 @@ -858,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 @@ -905,271 +947,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1247,183 +1214,7 @@ 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 $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - 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 $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - 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) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1485,18 +1276,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1507,54 +1297,51 @@ call $~lib/builtins/abort unreachable end + local.get $5 + 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 - 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 +1349,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 +1367,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1588,9 +1375,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 +1388,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 +1403,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 +1421,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 + local.set $3 + local.get $2 global.get $~lib/rt/itcms/white local.get $1 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,73 +1511,191 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if + 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.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 + i32.store8 local.get $0 - i32.const 20 + 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.load offset=4 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 - 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 + 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 3 - i32.eq - select + i32.const 32 + i32.ge_u if local.get $1 - call $~lib/rt/itcms/Object#makeGray + 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) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -1813,7 +1718,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 @@ -1825,73 +1730,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -1900,7 +1803,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/rt/__visit_members (param $0 i32) @@ -1942,24 +1847,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 +1874,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 +1883,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 @@ -1989,6 +1893,7 @@ (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 40 i32.sub @@ -2088,7 +1993,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 @@ -2097,16 +2001,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 @@ -2114,8 +2018,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 @@ -2127,7 +2032,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 @@ -2136,29 +2040,33 @@ 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 $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $2 + 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 $1 i32.store - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2171,7 +2079,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 @@ -2180,29 +2087,33 @@ 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 $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $2 + 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 $1 i32.store - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2215,7 +2126,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 @@ -2224,28 +2134,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 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 - 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 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -2257,7 +2165,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 @@ -2266,16 +2173,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 @@ -2283,8 +2190,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 @@ -2296,7 +2204,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 @@ -2305,16 +2212,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 @@ -2322,8 +2229,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 @@ -2337,7 +2245,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 @@ -2346,19 +2253,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 @@ -2366,8 +2273,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 @@ -2381,7 +2289,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 @@ -2390,29 +2297,33 @@ 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 $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $2 + 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 $1 i32.store - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2425,7 +2336,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 @@ -2434,35 +2344,36 @@ 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 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $2 + 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 $1 i32.store - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2475,7 +2386,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 +2398,34 @@ 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 13 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $1 + local.tee $1 i32.store local.get $0 - local.get $1 - call $~lib/rt/itcms/__link + if + 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 $0 + local.get $3 i32.store offset=4 - local.get $0 + local.get $3 i32.load - local.get $1 + local.get $0 i32.ne if i32.const 0 @@ -2522,7 +2437,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 @@ -2531,28 +2445,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 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 - 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 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -2564,7 +2476,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 @@ -2573,29 +2484,33 @@ 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 $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $2 + 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 $1 i32.store offset=4 - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2608,7 +2523,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 @@ -2617,35 +2531,36 @@ 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 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $2 + 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 $1 i32.store offset=4 - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2658,7 +2573,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 @@ -2667,27 +2581,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 @@ -2700,7 +2615,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 @@ -2709,27 +2623,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 @@ -2741,24 +2656,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 +2681,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 +2698,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 +2725,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 +2742,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 +2770,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 +2791,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 +2821,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 +2842,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 +2872,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 +2889,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 +2910,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 +2945,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 +2966,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 @@ -3082,7 +2988,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 @@ -3091,35 +2996,36 @@ 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 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $2 + 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 $1 i32.store - local.get $0 + local.get $1 i32.load i32.eqz if @@ -3131,7 +3037,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 +3048,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 +3068,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 +3079,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 @@ -3232,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 @@ -3275,9 +3181,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 +3228,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 +3269,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-initialization.untouched.wat b/tests/compiler/field-initialization.untouched.wat index 061989af79..9eeb4a40b4 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)) @@ -1541,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 @@ -3953,7 +3958,7 @@ if i32.const 512 i32.const 560 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -3964,10 +3969,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.optimized.wat b/tests/compiler/field.optimized.wat index 5b26035e25..ad24b303df 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 @@ -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 @@ -213,30 +211,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 +247,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 +262,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 +292,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 +329,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 +339,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 +477,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -518,7 +488,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -538,44 +508,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 +554,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -595,20 +564,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 +605,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 +632,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 +649,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 +678,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -721,7 +690,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -758,8 +727,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 @@ -836,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 @@ -883,271 +925,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1248,12 +1215,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 +1236,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 +1254,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1309,54 +1275,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 @@ -1364,16 +1327,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 @@ -1381,15 +1344,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 +1380,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 +1399,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1446,7 +1409,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1464,12 +1427,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 @@ -1529,19 +1492,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 +1513,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 +1533,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 +1545,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 +1667,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 +1676,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 +1690,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 +1717,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 +1752,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 +1773,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 +1790,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 +1807,7 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 end @@ -1920,15 +1828,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 +1846,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 +1867,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 +1878,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 +1889,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 +1910,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 +1927,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 +1958,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 +1969,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 +1980,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 +2001,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 +2018,7 @@ end br $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 @@ -2118,13 +2026,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 +2045,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 +2056,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 +2067,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 +2088,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 +2110,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 +2350,7 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 end @@ -2517,10 +2375,10 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $7 i32.const 0 i32.store - local.get $5 + local.get $7 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2529,14 +2387,14 @@ 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 4 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2547,138 +2405,138 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $8 i32.const 0 i32.store i32.const 1456 - local.set $2 + local.set $1 block $~lib/util/memory/memmove|inlined.0 i32.const 0 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 - local.tee $3 + local.tee $4 + local.tee $0 i32.const 1456 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 + local.get $0 i32.const 1456 i32.eq if - local.get $3 + local.get $0 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end - local.get $3 + local.get $0 i32.const 1456 i32.lt_u if - local.get $3 + local.get $0 i32.const 7 i32.and i32.eqz if loop $while-continue|0 - local.get $3 + local.get $0 i32.const 7 i32.and if - local.get $8 + local.get $6 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 + local.get $6 i32.const 1 i32.sub - local.set $8 - local.get $3 - local.tee $1 + local.set $6 + 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 end end loop $while-continue|1 - local.get $8 + local.get $6 i32.const 8 i32.ge_u if - local.get $3 - local.get $2 + local.get $0 + local.get $1 i64.load i64.store - local.get $8 + local.get $6 i32.const 8 i32.sub - local.set $8 - local.get $3 + local.set $6 + local.get $0 i32.const 8 i32.add - local.set $3 - local.get $2 + local.set $0 + local.get $1 i32.const 8 i32.add - local.set $2 + local.set $1 br $while-continue|1 end end end loop $while-continue|2 - local.get $8 + local.get $6 if - 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 - local.get $8 + local.get $6 i32.const 1 i32.sub - local.set $8 + local.set $6 br $while-continue|2 end end else - local.get $3 + local.get $0 i32.const 7 i32.and i32.eqz if loop $while-continue|3 - local.get $3 - local.get $8 + local.get $0 + local.get $6 i32.add i32.const 7 i32.and if - local.get $8 + local.get $6 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 @@ -2687,17 +2545,17 @@ end end loop $while-continue|4 - local.get $8 + local.get $6 i32.const 8 i32.ge_u if - local.get $8 + local.get $6 i32.const 8 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 i64.load @@ -2707,15 +2565,15 @@ end end loop $while-continue|5 - local.get $8 + local.get $6 if - 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 @@ -2725,43 +2583,49 @@ end end end + local.get $8 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 + local.tee $0 + local.get $4 i32.store - local.get $2 - local.get $7 - call $~lib/rt/itcms/__link - local.get $2 - local.get $7 + 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 $4 i32.store offset=4 - local.get $2 + local.get $0 i32.const 0 i32.store offset=8 - local.get $2 + 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 $6 - local.get $2 + local.get $5 + local.get $0 i32.store - local.get $6 - local.get $2 - call $~lib/rt/itcms/__link + 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 - local.get $6 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2780,9 +2644,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner0 - block $invalid - block $~lib/array/Array + block $folding-inner1 + block $folding-inner0 + block $invalid block $~lib/array/Array<~lib/string/String> block $~lib/string/String block $~lib/arraybuffer/ArrayBuffer @@ -2790,59 +2654,59 @@ 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 + 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 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 - i32.load - call $~lib/rt/itcms/__visit - return + br $folding-inner1 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 + return end local.get $0 i32.load 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 +2777,72 @@ 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 + ) + (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.untouched.wat b/tests/compiler/field.untouched.wat index 3c9951bf50..0b3da62555 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)) @@ -1534,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 @@ -3750,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.optimized.wat b/tests/compiler/for.optimized.wat index 671fc61a00..b281f13bd8 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 @@ -833,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 - global.set $~lib/rt/itcms/iter - br $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 - 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 + i32.const 1 + global.set $~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 local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -880,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1100,9 +942,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 +960,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 +976,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,19 +996,26 @@ (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) loop $for-loop|0 - local.get $0 + local.get $1 i32.const 10 i32.lt_s if - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - local.get $0 + local.get $1 i32.const 10 i32.ne if @@ -1177,21 +1026,19 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $0 + loop $for-loop|01 + local.get $3 i32.const 10 i32.lt_s if - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|00 + local.set $3 + br $for-loop|01 end end - local.get $0 + local.get $3 i32.const 10 i32.ne if @@ -1203,20 +1050,20 @@ unreachable end i32.const 10 - local.set $0 - loop $for-loop|01 - local.get $0 + local.set $1 + loop $for-loop|04 + local.get $1 i32.const 0 i32.gt_s if - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $for-loop|01 + local.set $1 + br $for-loop|04 end end - local.get $0 + local.get $1 if i32.const 0 i32.const 1056 @@ -1225,21 +1072,19 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $for-loop|02 - local.get $0 + loop $for-loop|07 + local.get $4 i32.const 10 i32.ne if - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 - br $for-loop|02 + local.set $4 + br $for-loop|07 end end - local.get $0 + local.get $4 i32.const 10 i32.ne if @@ -1251,15 +1096,15 @@ unreachable end i32.const 10 - local.set $0 - loop $for-loop|03 - local.get $0 + local.set $1 + loop $for-loop|010 + local.get $1 i32.const 1 i32.sub - local.tee $0 - br_if $for-loop|03 + local.tee $1 + br_if $for-loop|010 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1056 @@ -1268,18 +1113,16 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $for-loop|05 - local.get $0 + loop $for-loop|013 + local.get $7 i32.const 1 i32.add - local.tee $0 + local.tee $7 i32.const 10 i32.ne - br_if $for-loop|05 + br_if $for-loop|013 end - local.get $0 + local.get $7 i32.const 10 i32.ne if @@ -1290,21 +1133,19 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $for-loop|07 - local.get $0 + loop $for-loop|016 + local.get $5 i32.const 10 i32.lt_s if - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|07 + local.set $5 + br $for-loop|016 end end - local.get $0 + local.get $5 i32.const 10 i32.ne if @@ -1315,9 +1156,7 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $for-loop|08 + loop $for-loop|025 local.get $0 i32.const 10 i32.lt_s @@ -1327,25 +1166,25 @@ i32.ge_s if i32.const 0 - local.set $1 + local.set $2 loop $for-loop|1 - local.get $1 + local.get $2 i32.const 10 i32.lt_s if - local.get $2 + local.get $6 i32.const 1 i32.add - local.get $2 + local.get $6 local.get $0 - local.get $1 + local.get $2 i32.lt_s select - local.set $2 - local.get $1 + local.set $6 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|1 end end @@ -1354,7 +1193,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|08 + br $for-loop|025 end end local.get $0 @@ -1368,7 +1207,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 10 i32.ne if @@ -1379,7 +1218,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $6 i32.const 28 i32.ne if @@ -1422,8 +1261,6 @@ 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 @@ -1441,13 +1278,13 @@ call $for/Ref#constructor local.tee $0 i32.store - loop $for-loop|09 + loop $for-loop|08 local.get $0 if - local.get $1 + local.get $8 i32.const 1 i32.add - local.tee $1 + local.tee $8 i32.const 10 i32.eq if @@ -1459,10 +1296,10 @@ local.tee $0 i32.store end - br $for-loop|09 + br $for-loop|08 end end - local.get $1 + local.get $8 i32.const 10 i32.ne if @@ -1486,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 @@ -1507,30 +1342,30 @@ call $for/Ref#constructor local.tee $0 i32.store - loop $for-loop|06 + loop $for-loop|012 call $for/Ref#constructor if - block $for-break07 - 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-break07 + br $for-break011 end global.get $~lib/memory/__stack_pointer call $for/Ref#constructor local.tee $0 i32.store - br $for-loop|06 + br $for-loop|012 end end end - local.get $1 + local.get $9 i32.const 10 i32.ne if @@ -1617,7 +1452,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 +1485,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1687,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 @@ -1704,17 +1539,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 +1562,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 @@ -1744,15 +1579,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 +1614,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 $1 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 +1638,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $1 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 @@ -1845,8 +1680,8 @@ i32.load offset=8 local.set $3 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 @@ -1872,16 +1707,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 ) ) diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index a533f2a6cd..1e1cbea9db 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)) @@ -1959,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 @@ -2960,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.optimized.wat b/tests/compiler/function-call.optimized.wat index 6c96a509aa..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)) @@ -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 @@ -871,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 - global.set $~lib/rt/itcms/iter - br $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 - 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.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -918,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1138,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 @@ -1156,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 @@ -1172,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 @@ -1188,16 +1030,244 @@ 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 + (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 @@ -1218,7 +1288,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,14 +1298,14 @@ 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) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1339,293 +1409,221 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + 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 $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 + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $function-call/foo + global.get $~lib/memory/__stack_pointer + global.get $function-call/foo + local.tee $0 + i32.store + local.get $0 + i32.const 1680 + i32.load + call_indirect $0 (type $i32_=>_none) + i32.const 1 + i32.const 1712 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 1 + i32.ne if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1152 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 - call $~lib/rt/tlsf/searchBlock + global.get $~lib/memory/__stack_pointer + global.get $function-call/foo local.tee $0 - i32.eqz - if - memory.size + i32.store + local.get $0 + i32.const 1 + i32.const 2 + i32.const 1744 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18240 + i32.const 18288 + 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 $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.const 4 - local.get $3 - i32.load offset=1568 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end 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 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - local.get $1 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if - local.get $0 - memory.grow i32.const 0 - i32.lt_s + 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 $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 + local.get $0 + i32.load offset=8 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1616 - i32.const 496 + i32.const 1344 + i32.const 131 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 $1 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - 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.const 28 + local.get $1 i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $1 - local.get $4 - i32.const 4 - i32.sub + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) i32.const 1 - i32.or - i32.store - local.get $3 - 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.const 1760 i32.load - i32.const -4 - i32.and - i32.add - local.tee $1 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 -3 + i32.const 32 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 + 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.set $1 local.get $0 - global.get $~lib/rt/itcms/white - local.get $1 + local.get $2 + local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $4 + local.get $1 i32.store offset=8 - local.get $4 - local.get $4 + 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 $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 $2 - global.set $function-call/foo - global.get $~lib/memory/__stack_pointer - global.get $function-call/foo - local.tee $2 - i32.store - local.get $2 - i32.const 1680 - i32.load - call_indirect $0 (type $i32_=>_none) - i32.const 1 - i32.const 1712 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $function-call/foo - local.tee $2 - i32.store - local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount i32.const 1 - i32.const 2 - i32.const 1744 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - return + global.set $~lib/rt/itcms/visitCount end - i32.const 18240 - i32.const 18288 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) ) diff --git a/tests/compiler/function-call.untouched.wat b/tests/compiler/function-call.untouched.wat index b82907c3b2..4e98519326 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)) @@ -1567,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.optimized.wat b/tests/compiler/function-expression.optimized.wat index 9174601471..dad8c5e4aa 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 @@ -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 @@ -281,30 +279,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 +315,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 +330,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 +360,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 +397,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 +407,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 +545,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -586,7 +556,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -606,44 +576,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 +622,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -663,20 +632,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 +673,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 +700,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 +717,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 +746,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -789,7 +758,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -826,8 +795,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 @@ -904,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 @@ -951,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1171,9 +1141,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 +1159,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 +1175,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 @@ -1226,6 +1196,7 @@ ) (func $function-expression/semanticallyAnonymous (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1243,9 +1214,10 @@ end 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 2064 i32.store local.get $0 @@ -1263,7 +1235,7 @@ 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 + 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 @@ -1272,16 +1244,20 @@ unreachable 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 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 ) (func $~start @@ -1304,16 +1280,16 @@ 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 - local.get $5 + local.get $1 i32.const 2032 i32.store - local.get $5 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1322,7 +1298,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1359,13 +1335,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 @@ -1376,17 +1352,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $4 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $2 + local.tee $0 i32.const 4 - local.get $3 + local.get $4 i32.load offset=1568 - local.get $2 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1399,16 +1375,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + 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 $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1416,15 +1392,15 @@ unreachable end end - local.get $3 - local.get $2 + 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 $3 + local.get $4 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1451,22 +1427,22 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $2 + local.tee $5 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 $2 + local.get $5 i32.const 2 i32.and i32.const 28 @@ -1475,19 +1451,19 @@ local.get $0 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $5 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $2 + local.get $5 i32.const -2 i32.and i32.store @@ -1517,8 +1493,8 @@ i32.load offset=8 local.set $4 local.get $0 - global.get $~lib/rt/itcms/white local.get $2 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $0 @@ -1574,14 +1550,13 @@ i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 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 @@ -1598,13 +1573,13 @@ i32.and i32.eq if - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=4 i32.const 3 i32.and - local.tee $0 + local.tee $2 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1615,11 +1590,10 @@ global.get $~lib/rt/itcms/state i32.const 1 i32.eq - i32.const 0 - local.get $0 + local.get $2 i32.const 3 i32.eq - select + i32.and if i32.const 2012 call $~lib/rt/itcms/Object#makeGray @@ -1630,18 +1604,18 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 local.get $1 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.load i32.load call_indirect $0 (type $none_=>_i32) - local.tee $1 + local.tee $0 i32.store offset=8 i32.const 1 - local.get $1 + local.get $0 i32.load call_indirect $0 (type $i32_=>_i32) i32.const 25 @@ -2036,4 +2010,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-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index e42698f3cb..f142d9be69 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)) @@ -1723,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/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 691bd94c4a..1f363e14e9 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -40,6 +40,7 @@ ) (func $~start (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -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 diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 64a781b647..848473f30a 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 @@ -836,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 - global.set $~lib/rt/itcms/iter - br $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 - 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.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -883,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1103,9 +945,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 +963,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 +979,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 +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 @@ -1186,7 +1028,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 +1071,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 $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 - 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 + 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 + 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 $1 + local.get $0 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if 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 $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 $1 + 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 $1 + 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 $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 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + 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 $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 $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 $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 $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 - local.get $1 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add + i32.load offset=8 local.tee $1 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $3 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.load + i32.load offset=4 i32.const -4 i32.and - i32.add local.tee $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.load - i32.const -3 + 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 $1 + i32.or + i32.store offset=4 end + global.get $~lib/rt/itcms/toSpace + local.set $2 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 + 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 $4 + local.set $1 local.get $0 - global.get $~lib/rt/itcms/white - local.get $1 + local.get $2 + local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $4 + local.get $1 i32.store offset=8 - local.get $4 - local.get $4 + 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 $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 + i32.store offset=8 + 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/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index 691f91bf28..11bf3c25b4 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)) @@ -1535,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/heap.optimized.wat b/tests/compiler/heap.optimized.wat index a7058bf423..7f0815b046 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.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 @@ -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,46 +1678,46 @@ local.get $0 local.get $2 call $~lib/rt/tlsf/allocateBlock - local.tee $6 - i32.const 4 - i32.add - local.set $2 + 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 $2 + local.get $7 + 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 + local.get $6 i32.sub i32.const 0 - local.get $7 + local.get $6 i32.const 1 i32.shl i32.sub i32.le_u if local.get $2 - local.get $5 - local.get $7 + local.get $3 + local.get $6 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 @@ -1770,81 +1730,81 @@ 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 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 end end loop $while-continue|1 - local.get $7 + local.get $6 i32.const 8 i32.ge_u if local.get $2 - local.get $5 + 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 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 end loop $while-continue|2 - local.get $7 + local.get $6 if local.get $2 local.tee $4 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 + local.get $6 i32.const 1 i32.sub - local.set $7 + local.set $6 br $while-continue|2 end end else - local.get $5 + local.get $3 i32.const 7 i32.and local.get $2 @@ -1854,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 $2 - local.get $7 + local.get $6 i32.const 1 i32.sub - local.tee $7 + local.tee $6 + local.get $2 i32.add - local.get $5 - local.get $7 + local.get $3 + local.get $6 i32.add i32.load8_u i32.store8 @@ -1877,18 +1837,18 @@ end end loop $while-continue|4 - local.get $7 + local.get $6 i32.const 8 i32.ge_u if - local.get $2 - local.get $7 + local.get $6 i32.const 8 i32.sub - local.tee $7 + local.tee $6 + local.get $2 i32.add - local.get $5 - local.get $7 + local.get $3 + local.get $6 i32.add i64.load i64.store @@ -1897,16 +1857,16 @@ end end loop $while-continue|5 - local.get $7 + local.get $6 if - local.get $2 - local.get $7 + local.get $6 i32.const 1 i32.sub - local.tee $7 + local.tee $6 + local.get $2 i32.add - local.get $5 - local.get $7 + local.get $3 + local.get $6 i32.add i32.load8_u i32.store8 @@ -1929,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) @@ -1946,83 +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 $3 + local.set $2 local.get $0 call $~lib/rt/tlsf/checkUsedBlock - local.set $2 - block $folding-inner0 - local.get $1 - local.tee $0 - call $~lib/rt/tlsf/prepareSize - local.tee $1 - local.get $2 - i32.load - local.tee $5 - i32.const -4 - i32.and - local.tee $4 - 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 $2 - i32.load + local.get $7 i32.const -4 i32.and i32.add local.tee $6 - i32.load - local.tee $7 - i32.const 1 - i32.and + local.get $3 + i32.ge_u if - local.get $1 + local.get $2 + local.get $5 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $6 local.get $4 - i32.const 4 - i32.add - local.get $7 - i32.const -4 + i32.const 3 i32.and - i32.add - local.tee $4 - i32.le_u - if - local.get $3 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $2 - local.get $4 - local.get $5 - 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 $3 - local.get $2 - local.get $0 - call $~lib/rt/tlsf/moveBlock - br $__inlined_func$~lib/rt/tlsf/reallocateBlock end - local.get $3 local.get $2 + local.get $0 local.get $1 - call $~lib/rt/tlsf/prepareBlock - local.get $2 + 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 7ac15c9898..1fdd91429c 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 @@ -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 @@ -223,30 +221,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 +257,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 +272,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 +302,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 +339,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 +349,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 +487,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -528,7 +498,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -548,44 +518,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 +564,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -605,20 +574,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 +615,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 +642,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 +659,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 +688,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -731,7 +700,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -768,8 +737,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 @@ -846,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 @@ -893,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 - i32.ne - if + 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1113,9 +1083,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 +1101,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 +1117,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 @@ -1202,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 @@ -1219,17 +1189,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 +1212,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 +1229,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,22 +1264,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1318,19 +1288,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1390,13 +1360,14 @@ local.get $1 i32.const 20 i32.add + local.tee $0 local.tee $1 i32.const 0 i32.store8 local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1407,72 +1378,17 @@ local.get $1 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 - ) - (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 +1415,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 @@ -1704,9 +1620,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 @@ -1753,9 +1672,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 +1696,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/implicit-getter-setter.untouched.wat b/tests/compiler/implicit-getter-setter.untouched.wat index 846ece1d20..54685f8625 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)) @@ -1542,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.optimized.wat b/tests/compiler/infer-array.optimized.wat index e0719f3a8f..8ee55c5d7f 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 @@ -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 @@ -249,30 +247,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 +283,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 +298,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 +328,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 +365,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 +375,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 +513,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -554,7 +524,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -574,44 +544,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 +590,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -631,20 +600,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 +641,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 +668,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 +685,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 +714,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -757,7 +726,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -794,8 +763,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 @@ -872,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 @@ -919,271 +961,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1284,12 +1251,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 +1272,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 +1290,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1345,54 +1311,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 @@ -1400,16 +1363,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 @@ -1417,15 +1380,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 +1416,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 +1435,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1482,7 +1445,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1500,12 +1463,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 @@ -1565,19 +1528,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 +1549,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 +1569,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 +1581,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 +1703,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 +1718,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 +1874,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 +1901,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 +1912,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 +1923,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 +1937,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 +1967,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 +1992,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 +2003,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 +2014,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 +2028,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 +2054,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 +2079,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 +2090,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 +2101,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 +2115,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 +2152,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 @@ -2330,59 +2271,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 +2334,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 +2345,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 +2363,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 +2387,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,10 +2396,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 $start:infer-array (local $0 i32) @@ -2652,11 +2530,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 +2543,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 +2574,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 +2601,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 +2659,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 +2673,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 +2681,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 @@ -2813,7 +2691,7 @@ end i32.const 1280 i32.const 1488 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -2844,7 +2722,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 @@ -2854,41 +2732,48 @@ 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 - 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 ) (func $~start call $start:infer-array @@ -2916,22 +2801,21 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $9 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 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 @@ -2940,10 +2824,10 @@ local.get $3 local.get $1 i32.sub - local.get $8 + local.get $7 i32.sub i32.const 0 - local.get $8 + local.get $7 i32.const 1 i32.shl i32.sub @@ -2951,7 +2835,7 @@ if local.get $1 local.get $3 - local.get $8 + local.get $7 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end @@ -2972,13 +2856,13 @@ i32.const 7 i32.and if - local.get $8 + local.get $7 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 + local.get $7 i32.const 1 i32.sub - local.set $8 + local.set $7 local.get $1 local.tee $4 i32.const 1 @@ -2997,7 +2881,7 @@ end end loop $while-continue|1 - local.get $8 + local.get $7 i32.const 8 i32.ge_u if @@ -3005,10 +2889,10 @@ local.get $3 i64.load i64.store - local.get $8 + local.get $7 i32.const 8 i32.sub - local.set $8 + local.set $7 local.get $1 i32.const 8 i32.add @@ -3022,7 +2906,7 @@ end end loop $while-continue|2 - local.get $8 + local.get $7 if local.get $1 local.tee $4 @@ -3038,10 +2922,10 @@ local.get $5 i32.load8_u i32.store8 - local.get $8 + local.get $7 i32.const 1 i32.sub - local.set $8 + local.set $7 br $while-continue|2 end end @@ -3056,22 +2940,22 @@ if loop $while-continue|3 local.get $1 - local.get $8 + local.get $7 i32.add i32.const 7 i32.and if - local.get $8 + local.get $7 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $8 + local.get $7 i32.const 1 i32.sub - local.tee $8 + local.tee $7 + local.get $1 i32.add local.get $3 - local.get $8 + local.get $7 i32.add i32.load8_u i32.store8 @@ -3079,18 +2963,18 @@ end end loop $while-continue|4 - local.get $8 + local.get $7 i32.const 8 i32.ge_u if - local.get $1 - local.get $8 + local.get $7 i32.const 8 i32.sub - local.tee $8 + local.tee $7 + local.get $1 i32.add local.get $3 - local.get $8 + local.get $7 i32.add i64.load i64.store @@ -3099,16 +2983,16 @@ end end loop $while-continue|5 - local.get $8 + local.get $7 if - local.get $1 - local.get $8 + local.get $7 i32.const 1 i32.sub - local.tee $8 + local.tee $7 + local.get $1 i32.add local.get $3 - local.get $8 + local.get $7 i32.add i32.load8_u i32.store8 @@ -3118,6 +3002,7 @@ end end end + local.get $9 local.get $6 i32.store i32.const 16 @@ -3126,15 +3011,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 +3066,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-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index a7a74136c7..25fb03dc89 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)) @@ -1551,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 @@ -3705,7 +3709,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3731,7 +3735,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3757,7 +3761,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3783,7 +3787,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3825,7 +3829,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4601,7 +4605,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4647,7 +4651,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4693,7 +4697,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4718,7 +4722,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.optimized.wat b/tests/compiler/infer-generic.optimized.wat index 74adc9c662..8b743ab165 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 @@ -858,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 - global.set $~lib/rt/itcms/iter - br $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 - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter + i32.const 1 + global.set $~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 + 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/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 @@ -905,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1125,9 +967,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 +985,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 +1001,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,12 +1017,269 @@ end end ) - (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 + (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 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 + 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 $0 + local.tee $1 + i32.const 0 + i32.store8 + local.get $1 + i32.const 4 + i32.add + local.tee $2 + 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 $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 + ) + (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 @@ -1201,13 +1300,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 - 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 @@ -1216,15 +1319,17 @@ 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) (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 @@ -1235,51 +1340,51 @@ 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 $3 loop $for-loop|0 - local.get $1 + local.get $3 i32.const 1164 i32.load - local.tee $0 - local.get $0 - local.get $1 + local.tee $2 + local.get $2 + local.get $3 i32.gt_s select - local.get $2 + 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 +1421,7 @@ i32.const 1520 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $3 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1326,260 +1430,12 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + 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 $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 + call $~lib/rt/itcms/__new local.tee $1 - i32.const 0 - i32.store8 - local.get $1 - i32.const 4 - i32.add - 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 i32.const 0 @@ -1588,16 +1444,16 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 local.get $1 i32.store offset=8 local.get $1 i32.const 2 i32.store global.get $~lib/memory/__stack_pointer - local.tee $3 local.get $1 i32.store - local.get $3 + global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer @@ -1637,4 +1493,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index b7cf289aa2..30134cd190 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)) @@ -1621,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.optimized.wat b/tests/compiler/inlining.optimized.wat index 553f6c931d..30e159f4f7 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 @@ -845,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 - global.set $~lib/rt/itcms/iter - br $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 - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 + i32.const 1 + global.set $~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 + 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/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 @@ -892,271 +806,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1257,12 +1096,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 +1117,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 +1135,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1318,54 +1156,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 +1208,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 +1225,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 +1261,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 +1280,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1455,7 +1290,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1473,12 +1308,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 @@ -1538,19 +1373,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 +1394,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 +1414,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 +1426,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 +1548,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1739,13 +1574,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 +1599,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 $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer - 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 $1 + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 95 i32.const 3 - 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 - local.get $1 - local.get $0 - i32.store offset=8 + 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 $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 - i32.const 1 - i32.ne + i32.load offset=8 + local.tee $1 + 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 $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 2 - i32.ne + i32.const -4 + i32.and + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1056 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 - 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 $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 + 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 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 $1 + 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 $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 - call $~lib/builtins/abort - unreachable + i32.add + global.set $~lib/rt/itcms/visitCount end ) ) diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 19773dbe73..2992a1704e 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)) @@ -1741,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.optimized.wat b/tests/compiler/instanceof-class.optimized.wat index 416e6b86fd..613c843881 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 @@ -847,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 - global.set $~lib/rt/itcms/iter - br $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 - 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.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -894,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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,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 @@ -1132,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 @@ -1148,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 @@ -1203,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 @@ -1220,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 @@ -1243,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 @@ -1260,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 @@ -1295,22 +1137,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1319,19 +1161,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1568,7 +1410,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 +1420,12 @@ i32.load i32.le_u if - loop $do-loop|07 + loop $do-loop|011 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 +1434,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 @@ -1643,7 +1485,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 +1502,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/instanceof-class.untouched.wat b/tests/compiler/instanceof-class.untouched.wat index 26f3db7e58..4f986b8fa1 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)) @@ -1535,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.optimized.wat b/tests/compiler/issues/1095.optimized.wat index d53529b195..64cec2a8aa 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 @@ -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 @@ -217,30 +215,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 +251,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 +266,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 +296,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 +333,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 +343,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 +481,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -522,7 +492,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -542,44 +512,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 +558,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -599,20 +568,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 +609,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 +636,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 +653,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 +682,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -725,7 +694,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -762,8 +731,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 @@ -840,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 @@ -887,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1107,9 +1077,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 +1095,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 +1111,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,92 +1127,291 @@ 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 + 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 - 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 + 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 $0 + 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 - call $~lib/rt/itcms/__visit - end - ) - (func $~start + 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 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 + 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 $0 + local.tee $1 + i32.const 0 + i32.store8 + local.get $1 + i32.const 4 + i32.add + local.tee $2 + 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 $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 + ) + (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 + 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 + ) + (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 @@ -1301,272 +1470,23 @@ i32.const 0 i32.store 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 - 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 $3 - local.get $0 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $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 - 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 - 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 - 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 $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 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 + call $~lib/rt/itcms/__new 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 $0 i32.store local.get $0 i32.const 1456 i32.store local.get $0 i32.const 1456 - call $~lib/rt/itcms/__link + 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.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 @@ -1596,9 +1516,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 @@ -1616,4 +1539,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/issues/1095.untouched.wat b/tests/compiler/issues/1095.untouched.wat index 758618249b..6e7d533459 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)) @@ -1535,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.optimized.wat b/tests/compiler/issues/1225.optimized.wat index efd7f853c4..b5318efd08 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 $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))) (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 @@ -842,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 - global.set $~lib/rt/itcms/iter - br $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 - 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 + i32.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -889,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1109,9 +951,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 +969,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 +985,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 @@ -1159,23 +1001,84 @@ 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) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 + (local $4 i32) + (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 $1 + local.set $0 global.get $~lib/rt/itcms/state i32.eqz if @@ -1191,20 +1094,20 @@ 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 $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 @@ -1221,11 +1124,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 +1141,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $3 local.get $0 local.get $3 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1256,7 +1159,7 @@ end end local.get $1 - local.get $3 + local.get $0 i32.const 16 i32.shl memory.size @@ -1300,7 +1203,7 @@ i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $4 i32.const 16 i32.ge_u if @@ -1315,7 +1218,7 @@ i32.const 32 i32.add local.tee $3 - local.get $2 + local.get $4 i32.const 4 i32.sub i32.const 1 @@ -1338,8 +1241,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,26 +1255,26 @@ 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.set $3 local.get $0 + local.get $1 global.get $~lib/rt/itcms/white - local.get $3 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 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 @@ -1387,133 +1290,133 @@ 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 $0 i32.const 0 i32.store - i32.const 12 local.get $0 + i32.const 12 + local.get $1 i32.sub i32.const -4 i32.and - local.tee $2 - local.get $1 + local.tee $4 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub 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 $0 i32.const 0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 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 $0 i32.const 0 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.store offset=20 - local.get $1 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $5 i32.add local.set $1 - local.get $2 - local.get $0 + local.get $4 + local.get $5 i32.sub local.set $0 loop $while-continue|0 @@ -1545,123 +1448,30 @@ end end end + local.get $2 local.get $3 - ) - (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 $~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 - 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 @@ -1693,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 @@ -1723,4 +1533,185 @@ 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) + (local $3 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 + 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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/issues/1225.untouched.wat b/tests/compiler/issues/1225.untouched.wat index 95d7aa20ca..6d1f184cd0 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)) @@ -1546,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 @@ -2405,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.optimized.wat b/tests/compiler/issues/1699.optimized.wat index 8c314a75f9..3049127451 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 $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))) @@ -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 @@ -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 @@ -224,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) @@ -284,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 @@ -300,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 @@ -333,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 @@ -370,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 @@ -380,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 @@ -518,7 +488,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -529,7 +499,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -549,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 @@ -596,7 +565,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -606,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 @@ -647,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 @@ -674,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 @@ -694,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 @@ -723,6 +689,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -732,7 +701,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -769,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 @@ -847,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 @@ -894,271 +936,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - call $~lib/rt/tlsf/insertBlock + 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 + 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) + (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 @@ -1236,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 $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - 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 $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - 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) @@ -1474,18 +1265,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1496,54 +1286,51 @@ call $~lib/builtins/abort unreachable end + local.get $5 + 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 - local.tee $2 - call $~lib/rt/tlsf/searchBlock + i32.le_u + 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 @@ -1551,16 +1338,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 +1356,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1577,9 +1364,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 +1377,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 +1392,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 +1410,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 + local.set $3 + local.get $2 global.get $~lib/rt/itcms/white local.get $1 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,73 +1500,185 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if + 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.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 + 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 - local.tee $0 - i32.load offset=4 - i32.const 3 + 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 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 + loop $while-continue|0 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 + i32.const 32 + i32.ge_u if local.get $1 - call $~lib/rt/itcms/Object#makeGray + 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) @@ -1794,17 +1693,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 +1849,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 +1876,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 +1887,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 +1898,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 +1912,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 +1942,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 +1967,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 +1978,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 +1989,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 +2003,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 +2029,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 +2054,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 +2065,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 +2076,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 +2090,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 +2127,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 +2246,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 +2309,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 +2320,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 +2338,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 @@ -2500,8 +2371,6 @@ (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 @@ -2513,7 +2382,7 @@ if i32.const 1344 i32.const 1104 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -2521,59 +2390,57 @@ local.get $1 i32.const 1 i32.add - local.tee $9 - local.tee $7 + local.tee $3 local.get $0 i32.load offset=8 - local.tee $11 + local.tee $4 i32.const 2 i32.shr_u i32.gt_u if - local.get $7 + local.get $3 i32.const 268435455 i32.gt_u 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 $11 + local.get $4 i32.const 1 i32.shl - local.tee $6 + local.tee $4 i32.const 1073741820 - local.get $6 + local.get $4 i32.const 1073741820 i32.lt_u select local.tee $4 - local.get $7 + local.get $3 i32.const 8 - local.get $7 + local.get $3 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $6 + local.tee $3 + local.get $3 local.get $4 - local.get $6 - i32.gt_u + i32.lt_u select local.tee $10 - local.tee $12 local.get $0 i32.load - local.tee $8 + local.tee $9 local.tee $3 i32.const 20 i32.sub - local.tee $5 + local.tee $4 i32.load i32.const -4 i32.and @@ -2581,107 +2448,107 @@ i32.sub i32.le_u if - local.get $5 - local.get $12 + local.get $4 + local.get $10 i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $12 - local.get $5 + local.get $10 + local.get $4 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $7 - local.set $6 - local.get $12 - local.get $5 + local.set $5 + local.get $10 + local.get $4 i32.load offset=16 local.tee $4 local.get $4 - local.get $12 + local.get $10 i32.gt_u select - local.set $12 + local.set $8 block $~lib/util/memory/memmove|inlined.0 + local.get $5 + local.tee $4 local.get $3 - local.get $6 i32.eq br_if $~lib/util/memory/memmove|inlined.0 local.get $3 - local.get $6 + local.get $4 i32.sub - local.get $12 + local.get $8 i32.sub i32.const 0 - local.get $12 + local.get $8 i32.const 1 i32.shl i32.sub i32.le_u if - local.get $6 + local.get $4 local.get $3 - local.get $12 + local.get $8 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end local.get $3 - local.get $6 + local.get $4 i32.gt_u if local.get $3 i32.const 7 i32.and - local.get $6 + local.get $4 i32.const 7 i32.and i32.eq if loop $while-continue|0 - local.get $6 + local.get $4 i32.const 7 i32.and if - local.get $12 + local.get $8 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $12 + local.get $8 i32.const 1 i32.sub - local.set $12 - local.get $6 - local.tee $5 + local.set $8 + local.get $4 + local.tee $6 i32.const 1 i32.add - local.set $6 + local.set $4 local.get $3 - local.tee $4 + local.tee $7 i32.const 1 i32.add local.set $3 - local.get $5 - local.get $4 + local.get $6 + local.get $7 i32.load8_u i32.store8 br $while-continue|0 end end loop $while-continue|1 - local.get $12 + local.get $8 i32.const 8 i32.ge_u if - local.get $6 + local.get $4 local.get $3 i64.load i64.store - local.get $12 + local.get $8 i32.const 8 i32.sub - local.set $12 - local.get $6 + local.set $8 + local.get $4 i32.const 8 i32.add - local.set $6 + local.set $4 local.get $3 i32.const 8 i32.add @@ -2691,26 +2558,26 @@ end end loop $while-continue|2 - local.get $12 + local.get $8 if - local.get $6 - local.tee $5 + local.get $4 + local.tee $6 i32.const 1 i32.add - local.set $6 + local.set $4 local.get $3 - local.tee $4 + local.tee $7 i32.const 1 i32.add local.set $3 - local.get $5 - local.get $4 + local.get $6 + local.get $7 i32.load8_u i32.store8 - local.get $12 + local.get $8 i32.const 1 i32.sub - local.set $12 + local.set $8 br $while-continue|2 end end @@ -2718,29 +2585,29 @@ local.get $3 i32.const 7 i32.and - local.get $6 + local.get $4 i32.const 7 i32.and i32.eq if loop $while-continue|3 - local.get $6 - local.get $12 + local.get $4 + local.get $8 i32.add i32.const 7 i32.and if - local.get $12 + local.get $8 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 - local.get $12 + local.get $8 i32.const 1 i32.sub - local.tee $12 + local.tee $8 + local.get $4 i32.add local.get $3 - local.get $12 + local.get $8 i32.add i32.load8_u i32.store8 @@ -2748,18 +2615,18 @@ end end loop $while-continue|4 - local.get $12 + local.get $8 i32.const 8 i32.ge_u if - local.get $6 - local.get $12 + local.get $8 i32.const 8 i32.sub - local.tee $12 + local.tee $8 + local.get $4 i32.add local.get $3 - local.get $12 + local.get $8 i32.add i64.load i64.store @@ -2768,16 +2635,16 @@ end end loop $while-continue|5 - local.get $12 + local.get $8 if - local.get $6 - local.get $12 + local.get $8 i32.const 1 i32.sub - local.tee $12 + local.tee $8 + local.get $4 i32.add local.get $3 - local.get $12 + local.get $8 i32.add i32.load8_u i32.store8 @@ -2786,18 +2653,11 @@ end end end - local.get $7 + local.get $5 local.set $3 end local.get $3 - local.get $11 - i32.add - local.get $10 - local.get $11 - i32.sub - call $~lib/memory/memory.fill - local.get $3 - local.get $8 + local.get $9 i32.ne if local.get $0 @@ -2806,240 +2666,39 @@ local.get $0 local.get $3 i32.store offset=4 - local.get $0 local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - end - local.get $0 - local.get $10 - i32.store offset=8 - end - local.get $0 - local.get $9 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - ) - (func $start:issues/1699 - (local $0 i32) - (local $1 i32) - (local $2 i32) - memory.size - i32.const 16 - i32.shl - i32.const 18140 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1268 - i32.const 1264 - i32.store - i32.const 1272 - i32.const 1264 - i32.store - i32.const 1264 - global.set $~lib/rt/itcms/pinSpace - i32.const 1300 - i32.const 1296 - i32.store - i32.const 1304 - i32.const 1296 - i32.store - i32.const 1296 - global.set $~lib/rt/itcms/toSpace - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1756 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1756 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 32 - call $~lib/memory/memory.fill - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - i32.const 32 - i32.store offset=8 - local.get $0 - i32.const 3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - call $issues/1699/MultiAssignmentTest#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 1 - local.get $1 - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 0 - local.get $1 - call $~lib/array/Array#__set - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $0 - i32.load offset=12 - local.get $1 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - call $issues/1699/MultiAssignmentTest#constructor - local.tee $2 - i32.store offset=12 - local.get $1 - i32.const 1 - i32.gt_s if local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__set + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 end + local.get $0 + local.get $10 + i32.store offset=8 end - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - i32.const 1680 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.eq - if - i32.const 0 - i32.const 1680 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $0 + local.get $1 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $2 + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link 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) @@ -3066,50 +2725,256 @@ 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 ) (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 $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + 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 $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 $1 + local.get $2 + 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 $2 + i32.const 1 + local.get $1 + call $~lib/array/Array#__set + local.get $2 + 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 $2 + i32.const 0 + local.get $1 + call $~lib/array/Array#__set + loop $for-loop|0 + local.get $2 + 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 $2 + 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 $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) @@ -3173,7 +3038,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3193,7 +3058,7 @@ if i32.const 1552 i32.const 1104 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -3204,4 +3069,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/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 { diff --git a/tests/compiler/issues/1699.untouched.wat b/tests/compiler/issues/1699.untouched.wat index cc83e450b9..27534979fa 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)) @@ -1536,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 @@ -3763,7 +3768,7 @@ if i32.const 32 i32.const 80 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -3807,14 +3812,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 +3864,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4191,7 +4192,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -4213,10 +4214,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 +4287,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4311,7 +4312,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.optimized.wat b/tests/compiler/logical.optimized.wat index 4746759e4f..61a435064f 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 @@ -833,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 - global.set $~lib/rt/itcms/iter - br $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 - 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.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -880,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1100,9 +942,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 +960,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 +976,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 +1013,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 +1165,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1360,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 @@ -1377,17 +1219,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 +1242,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 @@ -1417,15 +1259,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 +1294,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 $1 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 +1318,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $1 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 @@ -1518,8 +1360,8 @@ i32.load offset=8 local.set $3 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 @@ -1545,16 +1387,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 ) ) diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat index f5d48e94c7..e47276a328 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)) @@ -1558,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 @@ -2420,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/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..4f8758408a 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 @@ -837,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 - global.set $~lib/rt/itcms/iter - br $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 - 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.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -884,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1104,9 +946,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 +964,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 +980,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 @@ -1193,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 @@ -1210,17 +1052,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 +1075,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 +1092,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,22 +1127,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1309,19 +1151,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1404,7 +1246,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 @@ -1532,25 +1374,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 @@ -1576,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 @@ -1591,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/__instanceof11 (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 @@ -1614,12 +1455,12 @@ i32.load i32.le_u if - loop $do-loop|012 + loop $do-loop|017 i32.const 1 local.get $1 i32.const 3 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof11 + br_if $__inlined_func$~lib/rt/__instanceof15 drop local.get $1 i32.const 3 @@ -1628,7 +1469,7 @@ i32.add i32.load offset=4 local.tee $1 - br_if $do-loop|012 + br_if $do-loop|017 end end i32.const 0 @@ -1653,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 @@ -1665,34 +1505,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/__instanceof19 (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|021 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/__instanceof19 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|021 end end i32.const 0 @@ -1706,7 +1546,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 +1554,11 @@ 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.get $0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1728,36 +1567,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/__instanceof24 (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|026 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/__instanceof24 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|026 end end i32.const 0 @@ -1773,10 +1612,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 @@ -1852,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 @@ -1876,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 @@ -1892,4 +1732,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/managed-cast.untouched.wat b/tests/compiler/managed-cast.untouched.wat index b68dcba200..bd5c191b51 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)) @@ -1535,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 @@ -2529,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/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..4d3a04ae76 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 @@ -873,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 - global.set $~lib/rt/itcms/iter - br $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 - 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.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -920,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1140,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 @@ -1158,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 @@ -1174,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 @@ -1229,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 @@ -1246,17 +1088,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 +1111,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 +1128,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,22 +1163,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1345,19 +1187,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1442,7 +1284,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 +1532,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat index 3a46f640eb..6d850e0d3e 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)) @@ -1538,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.optimized.wat b/tests/compiler/number.optimized.wat index a3546d088b..9ab69d4538 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 @@ -880,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 @@ -927,271 +841,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 +1158,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 +1170,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.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $1 i32.const 1073741820 i32.gt_u if @@ -1353,54 +1191,51 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 + 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 $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 +1244,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 +1260,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 +1282,7 @@ unreachable end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1461,12 +1296,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 +1315,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 +1367,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 + local.set $3 + local.get $1 global.get $~lib/rt/itcms/white local.get $2 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 +1405,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 +1420,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 +1435,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 +1452,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 +1467,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 +1495,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 +1521,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 +1547,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 +1583,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) @@ -1896,56 +1731,55 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select local.tee $2 - local.tee $0 + select + 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 @@ -1954,10 +1788,10 @@ local.tee $0 i32.store local.get $0 - local.get $2 + local.get $1 local.get $3 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 if local.get $0 i32.const 45 @@ -1974,6 +1808,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -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 @@ -2008,73 +1843,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2083,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) @@ -2114,14 +1949,12 @@ 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.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -2167,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 @@ -2185,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 @@ -2325,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 @@ -2344,44 +2177,42 @@ i32.shl i32.const 3454 i32.add - local.tee $8 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 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 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 - select + 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 $1 i64.add @@ -2389,8 +2220,8 @@ br $while-continue|3 end end - local.get $8 local.get $5 + local.get $2 i32.store16 local.get $4 return @@ -2403,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 @@ -2418,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 @@ -2435,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 @@ -2469,44 +2300,42 @@ i32.shl i32.const 3454 i32.add - local.tee $8 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 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 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 - select + 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 @@ -2514,8 +2343,8 @@ br $while-continue|6 end end - local.get $8 local.get $5 + local.get $2 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.get $1 - i32.const 2 - i32.add - local.tee $3 - 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 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $4 + local.get $1 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.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.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 $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 @@ -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 @@ -3788,8 +3577,7 @@ (local $2 i64) (local $3 i64) (local $4 i64) - (local $5 i64) - (local $6 i64) + (local $5 f64) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3881,21 +3669,36 @@ local.tee $4 i64.const 31 i64.shl - local.tee $2 - local.set $5 + local.set $2 local.get $3 i64.const 32 i64.shr_u local.tee $3 i64.const 31 i64.shl - local.tee $6 + local.get $2 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + i64.const 4294967295 + i64.and + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $3 + i64.const 31 + i64.shl + local.get $4 + i64.const 31 + i64.shl local.get $4 i64.const 10 i64.shl i64.const 32 i64.shr_u - local.get $2 i64.add local.tee $2 i64.const 32 @@ -3915,21 +3718,7 @@ i64.add i64.const 1 i64.sub - local.set $2 - local.get $5 - i64.const 32 - i64.shr_u - local.get $6 - i64.add - local.get $5 - i64.const 4294967295 - i64.and - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $2 + local.tee $2 global.get $~lib/util/number/_exp_pow i32.const 2 i32.add @@ -3946,14 +3735,14 @@ i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $2 i64.const 32 i64.shr_u i64.add local.get $3 i64.const 4294966784 i64.mul - local.get $4 + local.get $2 i64.const 4294967295 i64.and i64.add @@ -3970,28 +3759,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 $1 i32.store - local.get $0 - i32.const 3456 local.get $1 + i32.const 3456 + 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 - i32.store + local.tee $0 local.get $1 + i32.store + local.get $0 i32.const 4448 i32.store offset=4 - local.get $0 + local.get $1 i32.const 4448 call $~lib/string/String.__eq i32.eqz @@ -4005,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 $1 - local.get $0 - i32.store + local.tee $0 local.get $1 + i32.store + 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 @@ -4027,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 $1 - local.get $0 - i32.store + local.tee $0 local.get $1 + i32.store + 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 @@ -4049,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 $1 - local.get $0 - i32.store + local.tee $0 local.get $1 + i32.store + 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 @@ -4075,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 $1 - local.get $0 - i32.store + local.tee $0 local.get $1 + i32.store + 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 @@ -4101,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 $1 - local.get $0 - i32.store + local.tee $0 local.get $1 + i32.store + 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 @@ -4166,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 $1 - local.get $0 - i32.store + local.tee $0 local.get $1 + i32.store + 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 @@ -4193,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 $1 - local.get $0 - i32.store + local.tee $0 local.get $1 + i32.store + 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 @@ -4226,4 +4015,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index a44c71d806..19b979c51a 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)) @@ -1636,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.optimized.wat b/tests/compiler/object-literal.optimized.wat index d97952fd9d..735ea92ee8 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -1,12 +1,11 @@ (module (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (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 @@ -152,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 @@ -182,68 +179,13 @@ 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 - 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 - 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/itcms/visitRoots (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 +224,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 +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 @@ -358,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 @@ -391,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 @@ -428,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 @@ -438,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 @@ -576,7 +490,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -587,7 +501,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -607,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 @@ -654,7 +567,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -664,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 @@ -705,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 @@ -732,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 @@ -752,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 @@ -781,6 +691,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -790,7 +703,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -827,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 @@ -943,285 +856,284 @@ 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) - 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 - global.set $~lib/rt/itcms/iter - br $folding-inner0 + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 end - global.get $~lib/rt/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 + i32.const 1 + global.set $~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 local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter - 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 - br $folding-inner0 - end 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|1 + br $while-continue|0 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18156 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - global.get $~lib/rt/itcms/toSpace + 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 - 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 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end - global.get $~lib/rt/itcms/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.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 - 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.const 0 - i32.store offset=4 - local.get $0 - 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 1104 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + 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 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) + (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 @@ -1299,19 +1211,11 @@ 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 @@ -1324,52 +1228,49 @@ 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 +1278,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 +1295,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 +1321,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -1430,13 +1331,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.get $3 i32.const 4 i32.add i32.const 15 @@ -1452,7 +1353,7 @@ local.get $2 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub local.tee $4 i32.const 16 @@ -1462,23 +1363,23 @@ local.get $2 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.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -1502,8 +1403,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 +1452,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 +1480,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 global.get $~lib/rt/itcms/white - local.get $3 + 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 @@ -1611,7 +1514,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 +1526,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 +1541,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 +1558,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 +1573,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 +1601,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 +1627,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 +1653,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,12 +1689,13 @@ 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) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -1814,85 +1718,83 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - i32.ne - if - i32.const 0 - return - end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + i32.ne + if + 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 + i32.const 8 + i32.add + local.set $2 local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -1901,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) @@ -1917,17 +1821,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 +1977,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 +2004,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 +2015,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 +2026,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 +2040,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 +2070,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 +2095,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 +2106,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 +2117,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 +2131,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 +2157,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 +2182,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 +2193,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 +2204,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 +2218,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 +2255,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 +2374,53 @@ 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 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 $4 + 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 $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 +2437,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 +2448,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 +2466,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 +2514,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 +2525,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,13 +2585,10 @@ 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) @@ -2733,13 +2606,13 @@ 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 i32.const 0 i32.store offset=16 i32.const 1156 @@ -2774,7 +2647,7 @@ 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 @@ -2783,45 +2656,42 @@ i32.lt_s 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 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 + local.get $1 i32.const 1056 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1056 - call $~lib/rt/itcms/__link + call $byn-split-outlined-A$~lib/rt/itcms/__link 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 @@ -2832,7 +2702,7 @@ 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 +2715,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,8 +2739,16 @@ 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 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $6 i32.const 0 i32.store @@ -2896,33 +2774,29 @@ i32.const 0 i32.store i32.const 0 + i32.const 5 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 + local.tee $0 + local.get $0 i32.const 5 i32.gt_u select - local.tee $0 - local.get $0 + local.tee $1 local.get $1 + i32.const 0 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 $0 - local.get $0 local.get $1 + i32.const 0 i32.lt_s select i32.const 1 @@ -2930,7 +2804,7 @@ local.tee $1 local.get $2 i32.sub - local.tee $0 + local.tee $5 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -2938,11 +2812,11 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1568 - local.set $5 + local.set $4 br $__inlined_func$~lib/string/String#substring end i32.const 0 - local.get $3 + local.get $0 i32.const 1 i32.shl local.get $1 @@ -2955,19 +2829,17 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1056 - local.set $5 + local.set $4 br $__inlined_func$~lib/string/String#substring end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.const 1 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $4 i32.store - local.get $0 - local.set $4 block $~lib/util/memory/memmove|inlined.0 - local.get $5 + local.get $4 local.tee $0 local.get $2 i32.const 1056 @@ -2978,10 +2850,10 @@ local.get $1 local.get $0 i32.sub - local.get $4 + local.get $5 i32.sub i32.const 0 - local.get $4 + local.get $5 i32.const 1 i32.shl i32.sub @@ -2989,7 +2861,7 @@ if local.get $0 local.get $1 - local.get $4 + local.get $5 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end @@ -3010,32 +2882,32 @@ i32.const 7 i32.and if - local.get $4 + local.get $5 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 + local.get $5 i32.const 1 i32.sub - local.set $4 + local.set $5 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 end end loop $while-continue|1 - local.get $4 + local.get $5 i32.const 8 i32.ge_u if @@ -3043,10 +2915,10 @@ local.get $1 i64.load i64.store - local.get $4 + local.get $5 i32.const 8 i32.sub - local.set $4 + local.set $5 local.get $0 i32.const 8 i32.add @@ -3060,26 +2932,26 @@ end end loop $while-continue|2 - local.get $4 + local.get $5 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 + local.get $5 i32.const 1 i32.sub - local.set $4 + local.set $5 br $while-continue|2 end end @@ -3094,22 +2966,22 @@ if loop $while-continue|3 local.get $0 - local.get $4 + local.get $5 i32.add i32.const 7 i32.and if - local.get $4 + local.get $5 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 local.get $0 - local.get $4 + local.get $5 i32.const 1 i32.sub - local.tee $4 + local.tee $5 i32.add local.get $1 - local.get $4 + local.get $5 i32.add i32.load8_u i32.store8 @@ -3117,18 +2989,18 @@ end end loop $while-continue|4 - local.get $4 + local.get $5 i32.const 8 i32.ge_u if local.get $0 - local.get $4 + local.get $5 i32.const 8 i32.sub - local.tee $4 + local.tee $5 i32.add local.get $1 - local.get $4 + local.get $5 i32.add i64.load i64.store @@ -3137,16 +3009,16 @@ end end loop $while-continue|5 - local.get $4 + local.get $5 if local.get $0 - local.get $4 + local.get $5 i32.const 1 i32.sub - local.tee $4 + local.tee $5 i32.add local.get $1 - local.get $4 + local.get $5 i32.add i32.load8_u i32.store8 @@ -3161,7 +3033,7 @@ global.set $~lib/memory/__stack_pointer end local.get $6 - local.get $5 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3187,15 +3059,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 local.get $6 i32.load offset=4 - local.tee $0 + local.tee $1 i32.store - local.get $1 + local.get $0 i32.const 1600 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1600 call $~lib/string/String.__eq i32.eqz @@ -3214,8 +3086,7 @@ 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 @@ -3224,109 +3095,109 @@ i32.lt_s 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 65 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 - local.get $0 + 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 i32.const 4 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 0 i32.store - local.get $0 + 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 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -3336,7 +3207,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 if i32.const 0 @@ -3346,7 +3217,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.load offset=8 i64.eqz i32.eqz @@ -3358,7 +3229,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.load offset=16 i64.eqz i32.eqz @@ -3370,7 +3241,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f32.load offset=24 f32.const 0 f32.ne @@ -3382,7 +3253,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f64.load offset=32 f64.const 0 f64.ne @@ -3394,7 +3265,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load8_s offset=40 if i32.const 0 @@ -3404,7 +3275,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load8_u offset=41 if i32.const 0 @@ -3414,7 +3285,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load16_s offset=42 if i32.const 0 @@ -3424,7 +3295,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load16_u offset=44 if i32.const 0 @@ -3434,7 +3305,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=48 if i32.const 0 @@ -3444,7 +3315,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=52 if i32.const 0 @@ -3454,7 +3325,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f64.load offset=56 f64.const 0 f64.ne @@ -3466,7 +3337,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load8_u offset=64 if i32.const 0 @@ -3478,7 +3349,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 @@ -3487,48 +3357,46 @@ i32.lt_s 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 $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=4 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $1 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 + local.get $1 i32.store offset=12 - local.get $2 + local.get $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 1632 i32.store offset=4 - local.get $2 + local.get $1 i32.const 1632 - call $~lib/rt/itcms/__link - local.get $2 + 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 $0 - local.get $2 + local.get $1 i32.store local.get $0 i32.const 8 @@ -3541,7 +3409,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $2 + local.get $1 i32.load if i32.const 0 @@ -3552,15 +3420,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $2 - i32.load offset=4 local.tee $0 - i32.store local.get $1 + i32.load offset=4 + local.tee $2 + i32.store + local.get $0 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 +3440,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 f64.load offset=8 f64.const 0 f64.ne @@ -3589,8 +3457,7 @@ 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 @@ -3599,116 +3466,80 @@ i32.lt_s 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 $~lib/rt/itcms/__link - 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 $~lib/rt/itcms/__link - 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 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 0 i32.store offset=28 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - 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 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 0 i32.store offset=28 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - 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 @@ -3719,18 +3550,18 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i64.const 0 i64.store - local.get $2 local.get $0 + local.get $1 i32.load - local.tee $1 + local.tee $2 i32.store - local.get $2 + local.get $0 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 +3574,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 + local.tee $0 + local.get $1 i32.load offset=4 - local.tee $1 + local.tee $2 i32.store - local.get $2 + local.get $0 i32.const 1696 i32.store offset=4 - local.get $1 + local.get $2 i32.const 1696 call $~lib/string/String.__eq i32.eqz @@ -3764,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 @@ -3781,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 @@ -3798,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 @@ -3815,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 @@ -3832,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 @@ -3849,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 @@ -3865,7 +3696,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=32 if i32.const 0 @@ -3875,7 +3706,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=36 i32.const -1 i32.ne @@ -3897,23 +3728,23 @@ i32.const 0 i32.gt_s if - loop $while-continue|08 + loop $while-continue|017 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|08 + br $while-continue|017 end end end call $~lib/rt/itcms/step drop - loop $while-continue|19 + loop $while-continue|118 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|19 + br $while-continue|118 end end global.get $~lib/rt/itcms/total @@ -3939,4 +3770,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 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/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index 4c1f6cb3db..5c152a30b5 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)) @@ -1625,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 @@ -4262,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.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index df70d58d8c..99cfd40ab5 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 @@ -845,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 - global.set $~lib/rt/itcms/iter - br $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 - 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.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -892,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1112,9 +954,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 +972,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 +988,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 @@ -1201,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 @@ -1218,17 +1060,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 +1083,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 +1100,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,22 +1135,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1317,19 +1159,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1412,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 @@ -1534,4 +1376,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index e08253e6a4..be40364603 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)) @@ -1541,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..6cd77e35c7 100644 --- a/tests/compiler/overflow.ts +++ b/tests/compiler/overflow.ts @@ -128,3 +128,33 @@ 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; + 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..6586fcaf6f 100644 --- a/tests/compiler/overflow.untouched.wat +++ b/tests/compiler/overflow.untouched.wat @@ -677,6 +677,90 @@ 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 + 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 $2 + local.get $2 + i32.const 65597 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 159 + i32.const 3 + call $~lib/builtins/abort + unreachable + end ) (func $~start call $start:overflow 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 2b4310e1c7..132b69fd0b 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 @@ -922,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 @@ -969,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 15 + i32.and + i32.const 1 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 $1 - 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 $1 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1189,9 +1031,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 +1049,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 +1065,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 @@ -1278,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 @@ -1295,17 +1137,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 +1160,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 +1177,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,22 +1212,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1394,19 +1236,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1466,13 +1308,14 @@ local.get $1 i32.const 20 i32.add + local.tee $0 local.tee $1 i32.const 0 i32.store8 local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1483,17 +1326,17 @@ local.get $1 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 ) (func $export/sub (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -1546,7 +1389,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 @@ -1866,4 +1709,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat index 27af8da6f0..09709a9c0c 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)) @@ -1625,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.optimized.wat b/tests/compiler/rereexport.optimized.wat index 4c61049979..39a0afc23c 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 @@ -884,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 - global.set $~lib/rt/itcms/iter - br $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 - 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 + i32.const 1 + global.set $~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 local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -931,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1151,9 +993,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 +1011,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 +1027,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 +1072,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 @@ -1389,7 +1231,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1426,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 @@ -1443,17 +1285,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 +1308,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 @@ -1483,15 +1325,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 +1360,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 $1 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 +1384,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $1 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 @@ -1584,8 +1426,8 @@ i32.load offset=8 local.set $3 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 @@ -1614,13 +1456,14 @@ local.get $0 i32.const 20 i32.add + local.tee $0 local.tee $1 i32.const 0 i32.store8 local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1631,29 +1474,178 @@ local.get $1 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $3 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $4 - local.get $1 + local.get $2 + 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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 ) ) diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.untouched.wat index a893c1756c..2ee9a00878 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)) @@ -1577,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.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 9c86007b10..9618845565 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 @@ -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 @@ -235,30 +233,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 +269,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 +284,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 +314,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 +351,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 +361,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 +499,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -540,7 +510,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -560,44 +530,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 +576,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -617,20 +586,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 +627,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 +654,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 +671,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 +700,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -743,7 +712,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -780,8 +749,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 @@ -858,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 @@ -905,271 +947,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 +1237,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 +1258,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 +1276,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1331,54 +1297,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 @@ -1386,16 +1349,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 @@ -1403,15 +1366,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 +1402,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 +1421,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1468,7 +1431,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1486,12 +1449,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 @@ -1551,19 +1514,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 +1535,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 +1555,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 +1567,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 +1689,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (local $1 i32) @@ -1737,9 +1700,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 +1714,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 +1741,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 +1776,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 +1797,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 +1814,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 +1831,7 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 end @@ -1889,15 +1852,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 +1870,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 +1891,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 +1902,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 +1913,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 +1934,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 +1951,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 +1982,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 +1993,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 +2004,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 +2025,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 +2042,7 @@ end br $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 @@ -2087,13 +2050,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 +2069,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 +2080,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 +2091,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 +2112,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 +2134,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 @@ -2461,7 +2374,7 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 end @@ -2612,54 +2525,54 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $3 local.tee $1 + local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.tee $1 + local.tee $3 i32.const 1 i32.shl i32.const 1 @@ -2667,8 +2580,8 @@ local.tee $2 i32.store local.get $2 - local.get $3 local.get $1 + local.get $3 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -2822,45 +2735,42 @@ 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 + block $folding-inner0 + block $invalid + block $resolve-access/Container + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $resolve-access/Container $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.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 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 @@ -2933,37 +2843,37 @@ i32.const 8 local.set $7 i32.const 1056 - local.set $3 + 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 $0 + local.tee $1 i32.const 1056 i32.eq br_if $~lib/util/memory/memmove|inlined.0 i32.const 1048 - local.get $0 + local.get $1 i32.sub i32.const -16 i32.le_u if - local.get $0 + local.get $1 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end - local.get $0 + local.get $1 i32.const 1056 i32.lt_u if - local.get $0 + local.get $1 i32.const 7 i32.and i32.eqz if loop $while-continue|0 - local.get $0 + local.get $1 i32.const 7 i32.and if @@ -2974,18 +2884,18 @@ i32.const 1 i32.sub local.set $7 - local.get $0 + 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 br $while-continue|0 @@ -2996,22 +2906,22 @@ i32.const 8 i32.ge_u if + local.get $1 local.get $0 - local.get $3 i64.load i64.store local.get $7 i32.const 8 i32.sub local.set $7 - local.get $0 + local.get $1 i32.const 8 i32.add - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 8 i32.add - local.set $3 + local.set $0 br $while-continue|1 end end @@ -3019,18 +2929,18 @@ loop $while-continue|2 local.get $7 if - local.get $0 + 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 @@ -3041,13 +2951,13 @@ end end else - local.get $0 + local.get $1 i32.const 7 i32.and i32.eqz if loop $while-continue|3 - local.get $0 + local.get $1 local.get $7 i32.add i32.const 7 @@ -3056,11 +2966,11 @@ 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 + local.get $1 i32.add local.get $7 i32.const 1056 @@ -3075,11 +2985,11 @@ i32.const 8 i32.ge_u if - local.get $0 local.get $7 i32.const 8 i32.sub local.tee $7 + local.get $1 i32.add local.get $7 i32.const 1056 @@ -3093,11 +3003,11 @@ loop $while-continue|5 local.get $7 if - local.get $0 local.get $7 i32.const 1 i32.sub local.tee $7 + local.get $1 i32.add local.get $7 i32.const 1056 @@ -3111,17 +3021,16 @@ end local.get $5 local.get $4 - local.tee $0 i32.store i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $3 - local.get $0 + local.tee $0 + local.get $4 i32.store - local.get $0 + local.get $4 if - local.get $3 + local.get $0 i32.eqz if i32.const 0 @@ -3132,51 +3041,50 @@ unreachable end global.get $~lib/rt/itcms/white - local.get $0 + local.get $4 i32.const 20 i32.sub - local.tee $2 + local.tee $1 i32.load offset=4 i32.const 3 i32.and i32.eq if - local.get $3 + local.get $0 i32.const 20 i32.sub i32.load offset=4 i32.const 3 i32.and - local.tee $1 + local.tee $2 global.get $~lib/rt/itcms/white i32.eqz i32.eq if - local.get $2 + local.get $1 call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 i32.eq - i32.const 0 - local.get $1 + local.get $2 i32.const 3 i32.eq - select + i32.and if - local.get $2 + local.get $1 call $~lib/rt/itcms/Object#makeGray end end end end - local.get $3 local.get $0 + local.get $4 i32.store offset=4 - local.get $3 + local.get $0 i32.const 8 i32.store offset=8 - local.get $3 + local.get $0 i32.const 1 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -3184,20 +3092,20 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $6 - local.get $3 + local.get $0 i32.store - local.get $3 + local.get $0 i32.load offset=12 i32.eqz if i32.const 1280 i32.const 1488 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 i32.load offset=4 i64.load call $~lib/number/U64#toString @@ -3290,42 +3198,42 @@ (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 - i64.load - i32.wrap_i64 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3348 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + local.get $0 + 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 i32.eqz if @@ -3334,6 +3242,7 @@ 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 @@ -3383,27 +3292,27 @@ 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 - local.get $2 - local.get $0 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 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 @@ -3413,4 +3322,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-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index fcf2f3dc68..11df03b345 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)) @@ -1551,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 @@ -3705,7 +3709,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.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 77ecbd6323..50b36ddc41 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))) @@ -242,6 +242,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -264,7 +265,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 @@ -276,73 +277,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -351,7 +350,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/rt/itcms/visitRoots @@ -361,28 +362,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 +422,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 +458,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 +473,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 +503,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 +540,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 +550,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 +688,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -856,7 +699,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -876,44 +719,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 +765,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -933,20 +775,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 +816,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 +843,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 +860,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 +889,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1059,7 +901,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1096,8 +938,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 @@ -1174,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 @@ -1221,271 +1136,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1647,54 +1486,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 + memory.size + 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 +1538,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 +1555,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 +1591,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 +1610,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1784,7 +1620,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1802,12 +1638,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 @@ -1867,19 +1703,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 +1724,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 +1744,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 +1756,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 +1878,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) @@ -2190,56 +2026,55 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select local.tee $2 - local.tee $0 + select + 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 @@ -2249,10 +2084,10 @@ local.tee $0 i32.store local.get $0 - local.get $2 + local.get $1 local.get $3 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 if local.get $0 i32.const 45 @@ -2298,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) @@ -2346,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 @@ -2364,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 @@ -2504,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 @@ -2523,22 +2356,20 @@ i32.shl i32.const 9758 i32.add - local.tee $8 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 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,15 +2383,15 @@ local.get $6 local.get $9 i64.lt_u - select + 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 $1 i64.add @@ -2568,8 +2399,8 @@ br $while-continue|3 end end - local.get $8 local.get $5 + local.get $2 i32.store16 local.get $4 return @@ -2597,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 @@ -2614,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 @@ -2626,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 @@ -2648,22 +2479,20 @@ i32.shl i32.const 9758 i32.add - local.tee $8 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 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,15 +2506,15 @@ local.get $1 local.get $6 i64.gt_u - select + 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 @@ -2693,8 +2522,8 @@ br $while-continue|6 end end - local.get $8 local.get $5 + local.get $2 i32.store16 local.get $4 ) @@ -2711,17 +2540,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 +2696,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 +2723,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 +2734,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 +2745,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 +2759,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 +2789,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 +2814,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 +2825,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 +2836,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 +2850,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 +2876,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 +2901,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 +2912,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 +2923,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 +2937,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 +2974,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 +3093,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 +3156,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 +3167,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 +3185,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,11 +3426,10 @@ local.tee $3 i32.const 21 i32.le_s - i32.const 0 local.get $0 local.get $3 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $0 @@ -3664,28 +3464,27 @@ local.get $3 i32.const 21 i32.le_s - i32.const 0 local.get $3 i32.const 0 i32.gt_s - select + i32.and if (result i32) local.get $3 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 @@ -3695,16 +3494,15 @@ local.get $3 i32.const 0 i32.le_s - i32.const 0 local.get $3 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 local.get $3 i32.sub - local.tee $3 + local.tee $2 i32.const 1 i32.shl i32.const 9760 @@ -3721,7 +3519,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 +3537,7 @@ end end local.get $0 - local.get $3 + local.get $2 i32.add else local.get $0 @@ -3749,21 +3547,22 @@ i32.const 9762 i32.const 101 i32.store16 + i32.const 9764 local.get $3 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 +3608,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 +3615,7 @@ i32.const 9764 i32.const 45 i32.const 43 - local.get $3 + local.get $1 select i32.store16 local.get $0 @@ -3842,11 +3637,10 @@ local.get $1 i32.const 9760 i32.add - local.tee $1 + local.tee $5 i32.const 101 i32.store16 offset=2 - local.get $1 - local.tee $2 + local.get $5 i32.const 4 i32.add local.get $3 @@ -3855,7 +3649,7 @@ local.tee $1 i32.const 0 i32.lt_s - local.tee $5 + local.tee $3 if i32.const 0 local.get $1 @@ -3863,63 +3657,62 @@ local.set $1 end local.get $1 - local.tee $3 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.set $4 local.get $1 - local.get $3 + local.get $4 i32.const 1 i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $5 i32.const 45 i32.const 43 - local.get $5 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -3934,11 +3727,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 +3759,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 +3799,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 +3815,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 +3856,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 +3895,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,6 +3911,7 @@ (func $start:resolve-binary (local $0 i32) (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -5070,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 @@ -5422,21 +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 $0 + local.get $1 global.get $resolve-binary/bar2 - local.tee $1 + local.tee $2 + local.tee $0 i32.store offset=8 - local.get $1 - 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 @@ -5503,4 +5297,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index d434e75855..740e8907c9 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)) @@ -1809,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 @@ -3461,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 @@ -3787,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 @@ -3798,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.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index 6f78d8f528..21542a973f 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 @@ -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 @@ -287,30 +285,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 +321,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 +336,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 +366,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 +403,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 +413,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 +551,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -592,7 +562,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -612,44 +582,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 +628,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -669,20 +638,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 +679,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 +706,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 +723,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 +752,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -795,7 +764,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -832,8 +801,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 @@ -910,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 @@ -957,271 +999,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1299,183 +1266,7 @@ 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 $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - 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 $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - 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) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1537,18 +1328,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1559,54 +1349,51 @@ call $~lib/builtins/abort unreachable end + local.get $5 + 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 - 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 +1401,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 +1419,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1640,9 +1427,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 +1440,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,176 +1455,293 @@ 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 i32.and if i32.const 0 - i32.const 1504 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $6 - i32.const 16 - i32.ge_u - if + i32.const 1504 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $6 + i32.const 2 + i32.and + 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 $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 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.or + i32.const 28 + i32.sub + i32.const 0 i32.store - local.get $2 local.get $3 - i32.const 4 - i32.add - i32.add - local.tee $2 - local.get $6 - i32.const 4 + i32.const 24 i32.sub - i32.const 1 - i32.or + i32.const 0 i32.store - local.get $5 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else local.get $3 - local.get $4 - i32.const -2 - i32.and + 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.add - local.get $3 - i32.load - i32.const -4 i32.and + i32.const 24 i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 - 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.get $1 - i32.or - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $3 - i32.or - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $3 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $3 - i32.const 20 - i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 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.tee $3 + i32.add + local.set $1 local.get $0 - i32.const 20 + local.get $3 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.set $0 + loop $while-continue|0 local.get $0 - i32.const 3 - i32.eq - select + i32.const 32 + i32.ge_u if local.get $1 - call $~lib/rt/itcms/Object#makeGray + 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 @@ -1888,8 +1792,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) @@ -1913,14 +1817,12 @@ 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.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -1966,9 +1868,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 @@ -1984,137 +1886,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 @@ -2124,11 +2026,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 @@ -2143,44 +2045,42 @@ i32.shl i32.const 1774 i32.add - local.tee $8 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 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 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 - select + 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 $1 i64.add @@ -2188,8 +2088,8 @@ br $while-continue|3 end end - local.get $8 local.get $5 + local.get $2 i32.store16 local.get $4 return @@ -2202,7 +2102,7 @@ i64.const 10 i64.mul local.set $3 - local.get $6 + local.get $7 i64.const 10 i64.mul local.tee $0 @@ -2217,11 +2117,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 @@ -2234,26 +2134,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 @@ -2268,44 +2168,42 @@ i32.shl i32.const 1774 i32.add - local.tee $8 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 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 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 - select + 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 @@ -2313,8 +2211,8 @@ br $while-continue|6 end end - local.get $8 local.get $5 + local.get $2 i32.store16 local.get $4 ) @@ -2331,17 +2229,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 +2385,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 +2412,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 +2423,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 +2434,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 +2448,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 +2478,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 +2503,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 +2514,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 +2525,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 +2539,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 +2565,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 +2590,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 +2601,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 +2612,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 +2626,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 +2663,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 +2782,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 +2845,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 +2856,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 +2874,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 +3195,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 +3213,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 +3240,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 +3281,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 +3309,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 +3327,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -3474,24 +3338,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 +3400,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 +3433,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 +3453,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 +3523,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 +3554,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 +3581,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 +3595,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 +3622,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 +3632,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 +3661,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 +3741,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 +3761,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 @@ -3935,13 +3790,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 $~lib/number/F32#toString (param $0 f32) (result i32) @@ -4038,6 +3893,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -4060,7 +3916,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 @@ -4070,75 +3926,73 @@ i32.ne if i32.const 0 - return - end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 + i32.const 8 + i32.add + local.set $2 local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -4147,7 +4001,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) @@ -4192,25 +4048,25 @@ (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 @@ -4222,6 +4078,7 @@ 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 @@ -4271,37 +4128,47 @@ 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 $0 i32.store - local.get $2 - local.get $1 local.get $0 + local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 end + local.get $0 ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - 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 +4178,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 @@ -4469,22 +4336,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 +4375,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 +4536,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 +4575,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 +4622,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 +4657,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 @@ -4803,7 +4669,7 @@ if i32.const 1056 i32.const 1104 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -4812,25 +4678,69 @@ i32.const 2 local.get $1 i32.shl - local.tee $2 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $1 - local.get $2 - 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 $4 + 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 $4 + 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 $4 + 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 $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -4838,4 +4748,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-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 0a67fc5010..1255683dc2 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)) @@ -1574,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 @@ -6158,7 +6163,7 @@ if i32.const 32 i32.const 80 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -6172,10 +6177,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.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 6ebaf38a75..805e1477e1 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 @@ -873,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 - global.set $~lib/rt/itcms/iter - br $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 - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 + i32.const 1 + global.set $~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 + 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/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 @@ -920,271 +834,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1312,8 +1151,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 +1163,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.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $1 i32.const 1073741820 i32.gt_u if @@ -1346,54 +1184,51 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 + 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 $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 +1237,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 +1253,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 +1275,7 @@ unreachable end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1454,12 +1289,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 +1308,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 +1360,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 + local.set $3 + local.get $1 global.get $~lib/rt/itcms/white local.get $2 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 +1398,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 +1413,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 +1428,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 +1445,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 +1460,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 +1488,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 +1514,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 +1540,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 +1576,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1764,13 +1599,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 @@ -1781,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 @@ -1853,233 +1693,236 @@ 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 $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 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 $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1424 - local.set $2 - br $__inlined_func$~lib/util/number/itoa32 - end + block $__inlined_func$~lib/string/String.__eq (result i32) i32.const 0 - local.get $2 + 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 - local.get $2 - local.get $2 - i32.const 31 - i32.shr_u - local.tee $3 - select - local.tee $0 - local.set $2 + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 100 - i32.lt_u - if (result i32) - local.get $2 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $2 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $2 - i32.const 1000 - i32.ge_u + i32.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 $3 + br $__inlined_func$~lib/util/number/itoa32 end - else - local.get $2 - i32.const 10000000 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $2 + select + local.tee $0 + i32.const 100000 i32.lt_u if (result i32) - local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + 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 $2 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $2 - i32.const 100000000 + 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 $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 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 $1 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - loop $while-continue|0 local.get $0 - i32.const 10000 + i32.const 100 i32.ge_u if - local.get $0 - i32.const 10000 - i32.rem_u - local.set $4 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 local.get $1 - i32.const 4 + i32.const 2 i32.sub local.tee $1 i32.const 1 i32.shl - local.get $2 + 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 - end - end - local.get $0 - i32.const 100 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - local.get $2 - i32.add - local.get $0 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1836 - i32.add - i32.load - i32.store - local.get $0 - i32.const 100 - i32.div_u - local.set $0 - 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 $2 - i32.add - local.get $0 - i32.const 2 - i32.shl - i32.const 1836 - i32.add - i32.load - i32.store - else - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl + 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 local.get $2 + if + local.get $3 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $0 - i32.const 48 - i32.add - i32.store16 - end - local.get $3 - if - local.get $2 - i32.const 45 - i32.store16 + 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 $0 - local.get $2 - i32.store - local.get $0 - i32.const 3408 - i32.store offset=4 - block $__inlined_func$~lib/string/String.__eq (result i32) + 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 $2 + local.get $3 i32.const 3408 i32.eq br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $2 + 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 $2 + local.get $3 i32.const 20 i32.sub i32.load offset=16 @@ -2093,44 +1936,41 @@ 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 $2 - i32.const 7 - i32.and - i32.const 1 - local.get $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $2 - 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 $2 - i32.const 8 - i32.add - local.set $2 - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $1 @@ -2139,32 +1979,33 @@ local.set $0 local.get $1 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u local.tee $4 - i32.ne - if - local.get $1 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end local.get $2 - i32.const 2 - i32.add - local.set $2 + 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 @@ -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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index fa7aaca340..9a94ff8609 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)) @@ -1618,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.optimized.wat b/tests/compiler/resolve-nested.optimized.wat index 9bcbc08a53..0312391376 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 @@ -842,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 - global.set $~lib/rt/itcms/iter - br $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 - 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 + i32.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -889,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1109,9 +951,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 +969,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 +985,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 @@ -1198,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 @@ -1215,17 +1057,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 +1080,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 +1097,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,22 +1132,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1314,19 +1156,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1410,7 +1252,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 @@ -1673,4 +1515,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/resolve-nested.untouched.wat b/tests/compiler/resolve-nested.untouched.wat index fe5299cb7b..c8c8038796 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)) @@ -1557,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.optimized.wat b/tests/compiler/resolve-new.optimized.wat index f3c97f501e..c452094e26 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 @@ -838,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 - global.set $~lib/rt/itcms/iter - br $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 - 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.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -885,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1105,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 @@ -1123,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 @@ -1139,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 @@ -1176,7 +1018,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 +1112,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1307,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 @@ -1324,17 +1166,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 +1189,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 @@ -1364,15 +1206,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 +1241,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 $1 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 +1265,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $1 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 @@ -1465,8 +1307,8 @@ i32.load offset=8 local.set $3 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 @@ -1492,16 +1334,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 ) ) diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat index 3ec3effe0f..534a0de5f0 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)) @@ -1533,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.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 23f5f2986e..f214cfaec0 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 @@ -873,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 - global.set $~lib/rt/itcms/iter - br $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 - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter + i32.const 1 + global.set $~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 + 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/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 @@ -920,271 +834,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1285,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 @@ -1306,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 @@ -1324,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1346,54 +1184,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 +1236,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 +1253,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 +1289,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 +1308,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1483,7 +1318,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1501,12 +1336,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 @@ -1566,19 +1401,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 +1422,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 +1442,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 +1454,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,7 +1576,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/number/I32#toString (param $0 i32) (result i32) (local $1 i32) @@ -1778,6 +1613,7 @@ 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 @@ -1788,49 +1624,46 @@ local.tee $3 select local.tee $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - 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 @@ -1963,6 +1796,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -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 @@ -1997,73 +1831,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2072,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) @@ -2096,7 +1930,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 @@ -2379,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 @@ -2388,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 @@ -2405,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 @@ -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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index ca9881fdd1..08355c586a 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)) @@ -1619,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.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 456b46f485..19d10e82ea 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 @@ -877,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 @@ -924,271 +838,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1316,8 +1155,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 +1167,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.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $1 i32.const 1073741820 i32.gt_u if @@ -1350,54 +1188,51 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 + 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 $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 +1241,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 +1257,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 +1279,7 @@ unreachable end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1458,12 +1293,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 +1312,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 +1364,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 + local.set $3 + local.get $1 global.get $~lib/rt/itcms/white local.get $2 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 +1402,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 +1417,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 +1432,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 +1449,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 +1464,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 +1492,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 +1518,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 +1544,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 +1580,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) @@ -1855,6 +1690,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -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 @@ -1889,73 +1725,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -1964,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) @@ -1995,14 +1831,12 @@ 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.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -2048,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 @@ -2066,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 @@ -2206,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 @@ -2225,44 +2059,42 @@ i32.shl i32.const 3470 i32.add - local.tee $8 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 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 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 - select + 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 $1 i64.add @@ -2270,8 +2102,8 @@ br $while-continue|3 end end - local.get $8 local.get $5 + local.get $2 i32.store16 local.get $4 return @@ -2284,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 @@ -2299,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 @@ -2316,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 @@ -2350,44 +2182,42 @@ i32.shl i32.const 3470 i32.add - local.tee $8 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 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 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 - select + 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 @@ -2395,8 +2225,8 @@ br $while-continue|6 end end - local.get $8 local.get $5 + local.get $2 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,315 +3465,469 @@ 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 $1 i64) (local $2 i64) (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 + (local $4 i32) + (local $5 f64) block $folding-inner1 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 - 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.const 8 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.store + 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-inner1 + 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.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.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 + 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 + end + i32.const 21056 + i32.const 21104 + 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 $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + 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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 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 + i32.load offset=12 local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 3232 - i32.store offset=4 - local.get $0 - i32.const 3232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 3264 - i32.const 5 + i32.const 1 + i32.le_u + if (result i32) i32.const 1 - call $~lib/builtins/abort - unreachable + 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 - global.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-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const -4 - global.set $~lib/util/number/_K - i32.const 3880 - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 4312 - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $3 - i64.const 4294967295 - i64.and - local.tee $4 - i64.const 31 - i64.shl - local.tee $2 - local.set $5 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $3 - i64.const 31 - i64.shl - local.tee $6 - local.get $4 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - local.get $2 - i64.add - local.tee $2 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - i64.const 4294967295 - i64.and - local.get $3 - i64.const 10 - i64.shl - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $2 - local.get $5 - i64.const 32 - i64.shr_u - local.get $6 - i64.add - local.get $5 - i64.const 4294967295 - i64.and - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 local.get $2 - global.get $~lib/util/number/_exp_pow - i32.const 1 - i32.add + i32.load offset=8 + local.set $1 + local.get $0 local.get $2 local.get $3 - i64.const 2147483647 - i64.mul - local.get $4 - i64.const 2147483647 - i64.mul - local.get $4 - i64.const 4294966784 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $4 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 4294966784 - i64.mul - local.get $4 - 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 $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.or + i32.store offset=4 local.get $0 - i32.const 3472 local.get $1 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store + i32.store offset=8 + local.get $1 local.get $1 - i32.const 4464 + 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.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.store offset=8 + global.get $~lib/rt/itcms/visitCount 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 + global.set $~lib/rt/itcms/visitCount end - i32.const 21056 - i32.const 21104 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) ) diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 922eca36b6..6cb50eb234 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)) @@ -1626,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.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index 316609fa6b..8ae190069c 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 @@ -893,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 - global.set $~lib/rt/itcms/iter - br $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 - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter + i32.const 1 + global.set $~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 + 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/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 @@ -940,271 +854,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 +1144,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 +1165,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 +1183,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1366,54 +1204,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 +1256,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 +1273,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 +1309,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 +1328,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1503,7 +1338,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1521,12 +1356,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 @@ -1586,19 +1421,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 +1442,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 +1462,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 +1474,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,7 +1596,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/number/I32#toString (param $0 i32) (result i32) (local $1 i32) @@ -1798,6 +1633,7 @@ 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 @@ -1808,49 +1644,46 @@ local.tee $3 select local.tee $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - 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 @@ -1983,6 +1816,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -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 @@ -2017,73 +1851,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2092,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) @@ -2117,7 +1951,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 @@ -2571,16 +2405,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 +2426,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 @@ -2756,4 +2590,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index 921930f130..6e43525dc4 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)) @@ -1616,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.optimized.wat b/tests/compiler/rt/finalize.optimized.wat index bebac269d6..5cb5d51b6d 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 @@ -836,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 - global.set $~lib/rt/itcms/iter - br $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 - 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.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -883,233 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end if i32.const 0 - i32.const 1392 - i32.const 6 + 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 - global.set $rt/finalize/ran - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17908 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $1 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - call $~lib/rt/tlsf/insertBlock - end + 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) @@ -1118,9 +960,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 +978,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 +994,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 +1064,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1259,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 @@ -1276,17 +1118,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 +1141,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 @@ -1316,15 +1158,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 +1193,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 $1 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 +1217,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $1 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 @@ -1417,8 +1259,8 @@ i32.load offset=8 local.set $3 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 @@ -1444,17 +1286,17 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 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 +1363,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 +1380,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/rt/finalize.untouched.wat b/tests/compiler/rt/finalize.untouched.wat index fe37c5c7c1..73c8adfcee 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)) @@ -1556,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 @@ -2402,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/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.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index 0cb166024f..f4a5f7a597 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 @@ -876,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 @@ -923,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 - 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 $~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.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 $1 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $1 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $0 - local.get $0 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1143,9 +985,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 +1003,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 +1019,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 @@ -1232,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 @@ -1249,17 +1091,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 +1114,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 +1131,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,22 +1166,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1348,19 +1190,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1543,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 @@ -1557,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 @@ -1579,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 @@ -1589,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 @@ -1603,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 @@ -1626,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 @@ -1636,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 @@ -1650,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 @@ -1672,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 @@ -1682,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 @@ -1696,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 @@ -1719,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 @@ -1729,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 @@ -1743,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 @@ -1784,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 @@ -1794,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 @@ -1808,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 @@ -1830,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 @@ -1840,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 @@ -1854,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 @@ -1886,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 @@ -1896,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 @@ -1910,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 @@ -1933,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 @@ -1943,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 @@ -1957,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 @@ -1989,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 @@ -1999,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 @@ -2013,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 @@ -2036,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 @@ -2046,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 @@ -2060,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 @@ -2124,7 +1966,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 +2097,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index d6ceab0b6b..edb3157a87 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)) @@ -1543,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.optimized.wat b/tests/compiler/rt/runtime-incremental-export.optimized.wat index 6cffd17c15..9973399dfc 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 @@ -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 @@ -228,30 +226,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 +262,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 +277,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 +307,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 +344,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 +354,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 +492,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -533,7 +503,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -553,44 +523,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 +569,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -610,20 +579,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 +620,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 +647,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 +664,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 +693,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -736,7 +705,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -773,8 +742,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 @@ -851,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 @@ -898,271 +940,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1263,12 +1230,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 +1251,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 +1269,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1324,54 +1290,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 +1342,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 +1359,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 +1395,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 +1414,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1461,7 +1424,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1479,12 +1442,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 @@ -1544,19 +1507,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 +1528,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 +1548,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 +1560,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 +1682,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 +1746,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 +1764,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.get $0 + local.set $2 + local.get $1 global.get $~lib/rt/itcms/white - local.get $2 + local.get $0 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 +1849,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 +1889,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-incremental-export.untouched.wat b/tests/compiler/rt/runtime-incremental-export.untouched.wat index 1d8dc9fe14..bcf84011f0 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)) @@ -1539,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 @@ -2452,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/rt/runtime-minimal-export.optimized.wat b/tests/compiler/rt/runtime-minimal-export.optimized.wat index a2c0f41a79..36c97bacdc 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,18 +766,17 @@ 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 call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 - local.get $3 + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -796,54 +787,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 + 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 $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 + select + local.tee $5 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 + 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 $5 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $5 + i32.add + local.get $5 + local.get $5 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -851,16 +839,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $3 local.get $2 - local.get $4 - i32.lt_s + 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 @@ -868,16 +856,16 @@ unreachable end end - local.get $5 local.get $4 + local.get $2 i32.const 16 i32.shl memory.size 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 @@ -894,7 +882,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -904,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 $4 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -923,23 +911,23 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $4 + 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 @@ -951,12 +939,12 @@ 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 $4 + local.get $3 i32.const -2 i32.and i32.store @@ -1130,7 +1118,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 +1132,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.get $0 + local.set $2 + local.get $1 global.get $~lib/rt/tcms/white - local.get $2 + local.get $0 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 +1167,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 +1213,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 +1250,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 +1314,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 +1324,7 @@ if (result i32) i32.const 1 else - local.get $2 + local.get $6 i32.load i32.const 1 i32.and @@ -1349,14 +1337,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 +1351,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 +1384,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 +1416,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 + global.get $~lib/rt/tcms/white + i32.eqz + local.get $0 + 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..3992ea9b47 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 @@ -66,21 +66,21 @@ i32.sub local.tee $4 i32.add - local.tee $6 + local.tee $5 memory.size - local.tee $7 + local.tee $6 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 $6 - local.get $3 + local.get $5 + 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 $6 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 @@ -106,28 +106,27 @@ end end end - local.get $6 - global.set $~lib/rt/stub/offset local.get $5 + global.set $~lib/rt/stub/offset + 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..8e81148436 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 + 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 @@ -1727,19 +1717,11 @@ 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 @@ -1752,52 +1734,49 @@ 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.get $3 i32.const 4 i32.add i32.const 15 @@ -1880,7 +1859,7 @@ local.get $2 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub local.tee $4 i32.const 16 @@ -1890,23 +1869,23 @@ local.get $2 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.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -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,7 +1983,7 @@ end local.get $1 i32.load16_u offset=6 - local.tee $5 + local.tee $2 i32.const 128 i32.ge_u br_if $break|0 @@ -2021,7 +1997,7 @@ 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,7 +2015,7 @@ local.get $4 i32.store i32.const 1144 - local.get $2 + local.get $5 i32.const 8 i32.shl local.get $6 @@ -2048,7 +2024,7 @@ i32.const 16 i32.shl i32.or - local.get $5 + local.get $2 i32.const 24 i32.shl i32.or @@ -2073,31 +2049,29 @@ end return end - local.get $4 - local.set $3 - i32.const 0 - local.set $2 local.get $1 - local.tee $5 - local.tee $4 - local.get $4 + local.get $1 + local.tee $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 $1 - local.get $4 - i32.gt_u + local.get $3 + local.get $5 + i32.lt_u if - local.get $4 + local.get $3 i32.load16_u local.tee $6 i32.const 128 i32.lt_u if (result i32) - local.get $2 + local.get $1 i32.const 1 i32.add else @@ -2105,63 +2079,69 @@ i32.const 2048 i32.lt_u if (result i32) - local.get $2 - i32.const 2 - i32.add - else local.get $1 - local.get $4 i32.const 2 i32.add - i32.gt_u - i32.const 0 + else local.get $6 i32.const 64512 i32.and i32.const 55296 i32.eq - select + local.get $5 + local.get $3 + i32.const 2 + i32.add + i32.gt_u + i32.and if - local.get $4 + local.get $3 i32.load16_u offset=2 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $2 + local.get $1 i32.const 4 i32.add - local.set $2 - local.get $4 + local.set $1 + local.get $3 i32.const 4 i32.add - local.set $4 + local.set $3 br $while-continue|0 end end - local.get $2 + local.get $1 i32.const 3 i32.add end end - local.set $2 - local.get $4 + local.set $1 + local.get $3 i32.const 2 i32.add - local.set $4 + local.set $3 br $while-continue|0 end end - local.get $2 - local.tee $1 - call $~lib/rt/tlsf/__alloc - local.set $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $3 + local.get $2 local.get $4 + local.get $3 call $~lib/string/String.UTF8.encodeUnsafe@varargs local.get $1 i32.ne @@ -2174,7 +2154,7 @@ unreachable end i32.const 1136 - local.get $4 + local.get $3 i32.store i32.const 1140 local.get $1 @@ -2185,7 +2165,7 @@ i32.const 1144 call $~lib/bindings/wasi_snapshot_preview1/fd_write local.set $0 - local.get $4 + local.get $3 call $~lib/rt/tlsf/__free local.get $0 i32.const 65535 @@ -2207,22 +2187,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 +2269,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -2312,7 +2292,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -2322,15 +2302,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 @@ -2365,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 @@ -2395,603 +2373,522 @@ 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) - 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 - global.set $~lib/rt/itcms/iter - br $folding-inner0 - 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 - 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 - br $folding-inner0 - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 global.set $~lib/rt/itcms/visitCount call $~lib/rt/itcms/visitRoots global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq + 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 - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if local.get $0 - i32.const 24356 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + local.get $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 - global.get $~lib/rt/itcms/iter + local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - loop $while-continue|2 - global.get $~lib/rt/itcms/toSpace + 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/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 - 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 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end - global.get $~lib/rt/itcms/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.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 - 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.const 0 - i32.store offset=4 - local.get $0 - 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 4992 + 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 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 end - i32.const 0 - return - end - global.get $~lib/rt/itcms/visitCount - ) - (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 + global.get $~lib/rt/itcms/toSpace + local.tee $0 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 + i32.store offset=4 local.get $0 - i32.const 0 - i32.store8 offset=1 local.get $0 + i32.store offset=8 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 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + 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 $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 $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 $2 + local.tee $0 i32.add - local.tee $1 + 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 $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + 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 $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $1 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + 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 $1 + local.tee $3 i32.add - local.set $0 - local.get $2 - local.get $1 - 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) + (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 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 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $3 - i32.load offset=8 - local.set $1 - local.get $2 - global.get $~lib/rt/itcms/white - local.get $3 - i32.or - i32.store offset=4 - 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 - local.get $3 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - 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) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 if (result i32) local.get $0 @@ -3236,7 +3133,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 @@ -3244,7 +3141,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 +3149,51 @@ 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 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 $7 i32.ne if - local.get $8 + local.get $4 i32.load offset=16 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $4 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 $4 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 $5 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 +3201,38 @@ i32.add local.set $2 end - local.get $8 + local.get $4 i32.const 24 i32.add - local.set $8 + 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 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + 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 @@ -3486,54 +3389,54 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $3 local.tee $1 + local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.tee $1 + local.tee $3 i32.const 1 i32.shl i32.const 1 @@ -3541,8 +3444,8 @@ local.tee $2 i32.store local.get $2 - local.get $3 local.get $1 + local.get $3 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -3698,6 +3601,7 @@ (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 +3622,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 $2 local.tee $0 i32.add - local.set $2 + local.set $3 loop $while-continue|0 local.get $0 - local.get $2 + local.get $3 i32.lt_u if local.get $0 @@ -3748,7 +3656,11 @@ if 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 end local.get $0 i32.const 24 @@ -3757,336 +3669,222 @@ br $while-continue|0 end end - local.get $1 - call $~lib/rt/itcms/__visit + local.get $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable ) (func $~start + (local $0 i32) + (local $1 i32) 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.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 - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1088 + 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 - i32.const 1 + global.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 - 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 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 - 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 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 $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 + i32.const 4800 + i32.store + i32.const 1 + 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 $0 + i32.const 0 + i32.store 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 +3894,112 @@ 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 $1 - i32.load offset=16 - 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 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + 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 - 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 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link 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 @@ -4204,93 +4011,11 @@ i32.const 1 i32.const 1 call $~lib/wasi/index/abort - unreachable - ) - (func $~lib/console/timeLogImpl (param $0 i32) - (local $1 i32) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - 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 - 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 - 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.add - global.set $~lib/memory/__stack_pointer + unreachable ) - (func $~lib/console/console.timeLog (param $0 i32) - (local $1 i32) + (func $~lib/console/console.assert (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4305,53 +4030,35 @@ 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 + i32.const 1088 + i32.store + i32.const 2 + i32.const 1088 call $~lib/process/writeString - i32.const 1 - local.get $0 + i32.const 2 + local.get $1 call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 5616 - i32.store offset=4 - i32.const 1 - i32.const 5616 + i32.const 4464 + i32.store + i32.const 2 + i32.const 4464 call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return end - local.get $0 - call $~lib/console/timeLogImpl global.get $~lib/memory/__stack_pointer - i32.const 8 + 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/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 @@ -4366,109 +4073,211 @@ 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 + i32.const 1 local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - i32.eqz + 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) + (local $8 i32) + global.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 - 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 24384 + i32.const 24432 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 + call $~lib/wasi/index/abort + unreachable 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 + 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 $1 + local.get $2 + i32.eq + br_if $__inlined_func$~lib/string/String.__eq + drop + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + select + i32.eqz + br_if $__inlined_func$~lib/string/String.__eq + drop + i32.const 0 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $0 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $__inlined_func$~lib/string/String.__eq + drop + local.get $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 + 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 $4 + i32.const 1 + i32.sub + local.set $0 + local.get $4 + if + local.get $2 + i32.load16_u + local.tee $8 + local.get $3 + i32.load16_u + local.tee $7 + 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 + 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) + (func $~lib/console/console.time (param $0 i32) + (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4479,194 +4288,46 @@ 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 - i32.store - 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 - 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 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 - 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 + local.get $2 + global.get $~lib/console/timers + local.tee $2 i32.store + local.get $2 local.get $0 - i32.const 4800 - i32.store - i32.const 1 - 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 $0 - i32.const 0 - i32.store local.get $0 - 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 - 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 - 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 + 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 + global.get $~lib/console/timers + local.tee $4 i32.store - i32.const 5216 - global.set $~lib/rt/itcms/fromSpace + call $~lib/process/process.hrtime + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4676,121 +4337,380 @@ 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 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 + 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 - 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 + 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 + ) + (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 1 + 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 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 7776 + i32.const 5536 i32.store offset=4 - i32.const 7776 - call $~lib/console/console.time + 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 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) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4815,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 @@ -4824,15 +4744,85 @@ 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 $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 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 ) ) diff --git a/tests/compiler/std-wasi/console.untouched.wat b/tests/compiler/std-wasi/console.untouched.wat index 55d8738139..3886345944 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)) @@ -3582,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 @@ -6124,7 +6129,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 +6140,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 b0eee389d7..37ff5828c0 100644 --- a/tests/compiler/std-wasi/crypto.optimized.wat +++ b/tests/compiler/std-wasi/crypto.optimized.wat @@ -1,10 +1,10 @@ (module (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (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))) + (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))) @@ -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 @@ -823,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 @@ -853,30 +849,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 +885,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 +900,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 +930,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 +967,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 +977,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 +1115,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1158,7 +1126,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1178,44 +1146,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 +1192,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1235,20 +1202,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 +1243,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 +1270,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 +1287,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 +1316,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1361,7 +1328,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1398,8 +1365,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,50 +1481,123 @@ 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) - 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 + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + 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 @@ -1573,226 +1613,152 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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) + (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 @@ -1870,19 +1836,11 @@ 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 @@ -1895,52 +1853,49 @@ 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 +1903,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 +1920,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 +1946,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -2001,13 +1956,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.get $3 i32.const 4 i32.add i32.const 15 @@ -2023,7 +1978,7 @@ local.get $2 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub local.tee $4 i32.const 16 @@ -2033,23 +1988,23 @@ local.get $2 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.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -2073,350 +2028,293 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) - (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 $2 + local.tee $0 i32.add - local.tee $1 + 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 $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + 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 $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $1 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + 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 $1 + local.tee $3 i32.add - local.set $0 - local.get $2 - local.get $1 - 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 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $3 - i32.load offset=8 - local.set $1 - local.get $2 - global.get $~lib/rt/itcms/white - local.get $3 - i32.or - i32.store offset=4 - 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 - local.get $3 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total local.get $2 - i32.const 20 - i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - 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 @@ -2866,7 +2764,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 @@ -2883,62 +2780,60 @@ i32.const 1 return end + local.get $0 local.get $1 i32.const 255 i32.and - local.tee $2 - 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 end end - local.set $1 - local.get $0 - local.get $2 - local.get $1 + local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $0 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2953,17 +2848,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 +3004,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 +3031,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 +3042,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 +3053,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 +3067,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 +3097,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 +3122,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 +3133,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 +3144,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 +3158,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 +3184,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 +3209,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 +3220,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 +3231,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 +3245,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3387,131 +3282,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 @@ -3528,59 +3401,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 @@ -3597,7 +3464,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3608,11 +3475,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 @@ -3626,17 +3493,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 @@ -3848,50 +3715,48 @@ (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 + 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 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 - i32.const 1 - i32.sub - local.tee $2 - i32.const 0 + 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 - 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 - block $folding-inner0 - local.get $2 + 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 $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 $3 i32.load8_u - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3903,7 +3768,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3914,74 +3779,78 @@ 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 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 $2 + local.get $5 i32.const 6652 i32.load i32.const 1 @@ -3992,75 +3861,71 @@ i32.mul i32.const 10 i32.add - local.tee $6 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store loop $for-loop|0 - local.get $2 local.get $5 + local.get $6 i32.gt_s if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 + 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 $0 + local.get $1 i32.add - local.set $0 + local.set $1 local.get $4 if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $0 i32.add i32.const 6656 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 $0 + local.set $1 end - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|0 end end - local.get $6 - local.get $0 + local.get $2 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $0 i32.add - local.get $2 local.get $3 + local.get $5 i32.add i32.load8_u call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.tee $2 + local.tee $1 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 @@ -4068,21 +3933,11 @@ 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 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 @@ -4090,32 +3945,38 @@ i32.gt_s select local.tee $1 - local.get $2 + 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 $2 + local.get $4 i32.lt_s select local.tee $1 local.get $1 - local.get $3 + i32.const 0 i32.gt_s select i32.const 1 i32.shl - local.set $4 + local.set $3 block $__inlined_func$~lib/string/String#substring - local.get $3 + i32.const 0 local.get $1 local.get $1 - local.get $3 + i32.const 0 i32.lt_s select i32.const 1 i32.shl local.tee $1 - local.get $4 + local.get $3 i32.sub - local.tee $3 + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -4127,12 +3988,12 @@ br $__inlined_func$~lib/string/String#substring end i32.const 0 - local.get $2 + local.get $4 i32.const 1 i32.shl local.get $1 i32.eq - local.get $4 + local.get $3 select if global.get $~lib/memory/__stack_pointer @@ -4142,16 +4003,16 @@ 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 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 @@ -4160,23 +4021,20 @@ local.get $1 local.set $0 end - 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 $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 + local.get $0 + return end - local.get $0 - return end i32.const 23312 i32.const 23360 @@ -4277,33 +4135,33 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + 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 end local.get $0 i32.load16_u - local.tee $4 + local.tee $5 i32.const 128 i32.ge_u br_if $break|0 @@ -4311,19 +4169,19 @@ i32.const 6680 i32.store i32.const 6676 - local.get $5 + local.get $2 i32.store i32.const 6680 - local.get $3 + local.get $1 i32.const 8 i32.shl - local.get $4 + 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 @@ -4349,93 +4207,100 @@ 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 $4 + local.tee $5 i32.const 128 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.add else - local.get $4 + local.get $5 i32.const 2048 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 2 i32.add else + local.get $5 + i32.const 64512 + 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.const 0 - local.get $4 - i32.const 64512 i32.and - i32.const 55296 - i32.eq - select 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 - 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 $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $5 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 @@ -4446,10 +4311,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 @@ -4457,7 +4322,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 @@ -4513,7 +4378,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 @@ -4601,10 +4466,10 @@ 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 +4504,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 +4513,139 @@ 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 - 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 +4655,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 +4696,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 @@ -4933,9 +4795,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 @@ -4957,151 +4822,155 @@ (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 6900 - i32.lt_s - br_if $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 - 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 $5 - local.get $0 - local.get $5 - i32.sub - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.tee $6 - local.set $2 - local.get $4 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 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 + local.tee $1 + local.tee $3 i32.const 0 i32.store - local.get $0 i32.const 0 - call $~lib/rt/itcms/__link local.get $0 + i32.load offset=8 + local.tee $4 + local.get $4 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 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - 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 $0 + i32.gt_s + select + local.set $2 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 19 + 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 $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 + local.tee $1 i32.store - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 + local.get $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 $4 - local.get $0 - i32.store local.get $0 i32.load offset=4 - local.get $5 - 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 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 return end i32.const 23312 @@ -5111,4 +4980,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/crypto.untouched.wat b/tests/compiler/std-wasi/crypto.untouched.wat index e475f22c07..bd5cad7d2c 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)) @@ -2139,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 @@ -6166,7 +6171,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 +6182,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 +6860,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 +6874,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 f0f6ba7829..7177cdaa28 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.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 @@ -1713,19 +1703,11 @@ 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 @@ -1738,52 +1720,49 @@ 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.get $3 i32.const 4 i32.add i32.const 15 @@ -1866,7 +1845,7 @@ local.get $2 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub local.tee $4 i32.const 16 @@ -1876,23 +1855,23 @@ local.get $2 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.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -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,33 +1964,33 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + 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 end local.get $0 i32.load16_u - local.tee $4 + local.tee $5 i32.const 128 i32.ge_u br_if $break|0 @@ -2022,19 +1998,19 @@ i32.const 1096 i32.store i32.const 1092 - local.get $5 + local.get $2 i32.store i32.const 1096 - local.get $3 + local.get $1 i32.const 8 i32.shl - local.get $4 + 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 @@ -2060,93 +2036,100 @@ 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 $4 + local.tee $5 i32.const 128 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.add else - local.get $4 + local.get $5 i32.const 2048 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 2 i32.add else + local.get $5 + i32.const 64512 + 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.const 0 - local.get $4 - i32.const 64512 i32.and - i32.const 55296 - i32.eq - select 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 - 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 $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $5 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 @@ -2157,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 @@ -2168,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 @@ -2187,55 +2170,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 +2285,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -2325,7 +2308,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -2335,15 +2318,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 @@ -2378,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 @@ -2408,65 +2389,115 @@ 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) - 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 + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + 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 @@ -2482,558 +2513,427 @@ 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 23788 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 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.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 4656 - 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 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 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) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result 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 + (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 $0 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 i32.add - local.tee $2 + 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 $2 + local.tee $0 i32.add - local.tee $1 + 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 $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + 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 $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $1 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + 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 $1 + local.tee $3 i32.add - local.set $0 - local.get $2 - local.get $1 - 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 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 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $3 - i32.load offset=8 - local.set $1 - local.get $2 - global.get $~lib/rt/itcms/white - local.get $3 - i32.or - i32.store offset=4 - 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 - local.get $3 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - 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) - (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 $4 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $3 - i32.load8_u - i32.store8 - local.get $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 @@ -3166,19 +3066,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 +3093,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 +3104,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 +3115,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 +3129,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 +3159,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 +3184,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 +3195,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 +3206,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 +3220,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 +3246,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 +3271,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 +3282,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 +3293,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 +3307,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 +3344,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 +3463,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 +3526,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 +3537,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 +3555,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 +3776,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -3913,28 +3785,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) @@ -3953,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 @@ -3992,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 @@ -4008,10 +3873,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 @@ -4031,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 @@ -4055,10 +3923,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 +3945,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 +4420,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 +4478,7 @@ local.tee $0 i32.add local.set $2 - loop $while-continue|00 + loop $while-continue|01 local.get $0 local.get $2 i32.lt_u @@ -4614,20 +4491,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|01 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 @@ -4709,40 +4597,40 @@ if local.get $2 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 - i32.load - local.tee $0 - 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 $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 $0 local.get $1 i32.const 20 i32.sub @@ -4752,10 +4640,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 $0 call $~lib/util/string/compareImpl i32.eqz end @@ -4768,7 +4656,7 @@ local.get $2 return end - local.get $3 + local.get $4 i32.const -2 i32.and local.set $2 @@ -4824,18 +4712,28 @@ end i32.const 1088 i32.load - local.tee $7 + local.tee $4 i32.const 2 i32.shl local.tee $0 i32.const 1092 i32.load i32.add - local.tee $8 - call $~lib/rt/tlsf/__alloc - local.tee $4 + local.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 $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + 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 @@ -4851,8 +4749,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 @@ -4873,24 +4770,30 @@ local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $6 i32.store - local.get $0 - local.get $1 - 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 local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $6 i32.store offset=8 - local.get $0 - local.get $1 - 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 local.get $0 i32.const 4 i32.store offset=12 @@ -4904,134 +4807,137 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 local.get $0 - local.tee $1 i32.store loop $for-loop|0 - local.get $5 - local.get $7 + local.get $3 + local.get $4 i32.lt_u if global.get $~lib/memory/__stack_pointer - local.get $5 + 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 $8 + 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 $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) + global.get $~lib/memory/__stack_pointer + i32.const 5168 + i32.store offset=8 + 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.set $1 + local.get $8 + local.get $7 i32.sub - local.set $2 - loop $for-loop|00 - local.get $0 - local.get $2 + local.set $8 + loop $for-loop|02 + local.get $1 + local.get $8 i32.le_s if - local.get $3 - local.get $0 - i32.const 5168 + local.get $1 local.get $6 + local.get $1 + i32.const 5168 + local.get $7 call $~lib/util/string/compareImpl i32.eqz br_if $__inlined_func$~lib/string/String#indexOf - local.get $0 + drop + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|00 + local.set $1 + br $for-loop|02 end end i32.const -1 - local.set $0 end - local.get $0 + local.tee $1 i32.const -1 i32.xor if - local.get $3 + local.get $6 i32.const 0 - local.get $0 + local.get $1 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 $0 + local.get $6 + 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 - i32.store offset=12 local.get $1 - local.get $2 + i32.store offset=12 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 $1 - local.get $3 + local.get $0 + local.get $6 i32.const 5200 call $~lib/map/Map<~lib/string/String,~lib/string/String>#set end - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 + 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 $1 + local.get $0 return end i32.const 23808 @@ -5050,815 +4956,826 @@ (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 $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1056 - i32.store - i32.const 1056 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 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 + (local $8 i32) + (local $9 i32) + block $folding-inner1 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 $1 - i32.const 65535 - i32.and - if - local.get $1 - 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 $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1092 - i32.load - i32.add - local.tee $6 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $1 - local.get $5 - i32.add - call $~lib/bindings/wasi_snapshot_preview1/args_get - local.tee $5 - i32.const 65535 - i32.and - if - local.get $5 - 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 $4 - call $~lib/array/Array<~lib/string/String>#constructor - local.tee $5 - i32.store - loop $for-loop|0 - local.get $3 - local.get $4 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 7404 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl - local.get $1 - i32.add - i32.load - local.tee $7 - local.get $6 - local.get $7 - i32.add - local.get $1 - i32.sub - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $7 - i32.store offset=4 - local.get $5 - local.get $3 - local.get $7 - call $~lib/array/Array<~lib/string/String>#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $1 - 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 - 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 $3 - loop $for-loop|00 - local.get $0 - local.get $3 + 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 - global.get $std-wasi/process/argv - local.tee $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/console/console.log - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 + local.get $5 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4224 + i32.const 64 + i32.const 12 + call $~lib/wasi/index/abort + unreachable 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 $4 - global.get $std-wasi/process/env - local.tee $3 - i32.store - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - local.get $4 - 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 $4 - i64.const 0 - i64.store - local.get $3 - i32.load offset=8 - local.set $5 - local.get $4 - local.get $3 - i32.load offset=16 - local.tee $4 - call $~lib/array/Array<~lib/string/String>#constructor - local.tee $3 - i32.store - loop $for-loop|01 - local.get $1 - local.get $4 - 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 - local.get $1 + 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 $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 $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 $3 - 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 $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|01 end - end - local.get $3 - local.get $0 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $3 - 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 - 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 $3 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std-wasi/process/envKeys - local.tee $4 - i32.store - local.get $1 - local.get $4 - local.get $0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5280 - i32.store offset=4 - i32.const 5280 - call $~lib/process/writeString - local.get $1 - 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 $1 + 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 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,~lib/string/String>#find - local.tee $1 - i32.eqz + local.get $3 + 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 $1 - i32.load offset=4 - local.tee $1 - i32.store - local.get $1 - call $~lib/console/console.log - local.get $0 - i32.const 1 - i32.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 $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-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 5696 - 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 + 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 - 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) + global.get $std-wasi/process/env + local.tee $3 + i32.store + local.get $1 + 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 + 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 + 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 - i32.const 10 - i32.ge_u + local.tee $1 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 + 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 + local.get $7 + call $~lib/array/Array<~lib/string/String>#__set end - else + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|02 + end + 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 + 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 - 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 + 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 - 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 + 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 - local.get $3 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer + 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.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/itoa64 local.get $2 - i64.const 1000000000000000 - i64.lt_u - if (result i32) + 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 $0 + select + local.tee $2 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer local.get $2 - i64.const 1000000000000 - i64.lt_u + i32.wrap_i64 + local.tee $3 + local.tee $1 + i32.const 100000 + i32.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 + 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 $2 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $2 - i64.const 10000000000000 - i64.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 + local.get $0 + 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 100000000000000000 + i64.const 1000000000000000 i64.lt_u if (result i32) local.get $2 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add + 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 -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $2 - i64.const 1000000000000000000 - i64.ge_u - i32.add + 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 - 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 + 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.get $0 - local.get $2 - local.get $3 - call $~lib/util/number/utoa64_dec_lut + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer local.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 - i32.const 45 - i32.store16 + 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.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 $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-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64 - local.get $2 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 5696 - local.set $0 - br $__inlined_func$~lib/util/number/utoa64 - end - local.get $2 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer + 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 - 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 + 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.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $3 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer local.get $2 - i64.const 1000000000000000 - i64.lt_u - if (result i32) + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer local.get $2 - i64.const 1000000000000 - i64.lt_u + i32.wrap_i64 + local.tee $0 + local.tee $1 + i32.const 100000 + i32.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 + 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 $2 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $2 - i64.const 10000000000000 - i64.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 + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $3 + call $~lib/util/number/utoa32_dec_lut else + global.get $~lib/memory/__stack_pointer local.get $2 - i64.const 100000000000000000 + i64.const 1000000000000000 i64.lt_u if (result i32) local.get $2 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add + 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 -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $2 - i64.const 1000000000000000000 - i64.ge_u - i32.add + 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 $1 - 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 $2 - local.get $1 - 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 $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 - 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 @@ -5901,10 +5818,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 @@ -5918,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 @@ -5932,26 +5845,26 @@ 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 - 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 +5931,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 +5948,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 +5977,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 +6009,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 +6062,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 @@ -6200,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 @@ -6220,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 @@ -6232,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 @@ -6257,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 @@ -6266,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) @@ -6330,9 +6239,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 @@ -6345,10 +6255,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 +6272,7 @@ local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.eq local.get $4 select @@ -6375,7 +6285,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 +6294,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 +6328,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 +6369,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 +6386,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 +6401,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 +6409,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 +6461,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 +6511,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 +6523,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 +6551,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 +6576,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-wasi/process.untouched.wat b/tests/compiler/std-wasi/process.untouched.wat index 4ea7f0c17f..d097d147d1 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)) @@ -3580,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 @@ -5318,7 +5323,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 +5367,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 +5419,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 +7746,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 +7768,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 +8173,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 +8198,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 +8228,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 +8239,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 cb72604bf0..5b528c7bc8 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -24,108 +24,97 @@ (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 0 + (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 $2 - local.get $2 - select - local.set $3 - local.get $2 - local.get $3 - i32.const 1292 - i32.load - i32.const 1 - i32.shr_u - local.tee $2 - 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 $4 - local.get $3 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $3 - i32.const 7 - i32.and - i32.const 1 - local.get $2 - local.tee $1 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 + 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 - local.get $4 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $4 - i32.const 8 - i32.add - local.set $4 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 4 - i32.ge_u - br_if $do-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 $4 + local.get $1 i32.load16_u - local.tee $0 + local.tee $4 local.get $3 i32.load16_u - local.tee $2 + local.tee $5 + i32.sub + local.set $2 + local.get $4 + local.get $5 i32.ne - if - local.get $2 - local.get $0 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.set $1 + local.get $3 i32.const 2 i32.add - local.set $4 + local.set $3 br $while-continue|1 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) @@ -154,7 +143,7 @@ if i32.const 1056 i32.const 1120 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -174,7 +163,7 @@ if i32.const 1168 i32.const 1120 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -225,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 dd66dff450..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 @@ -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 @@ -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 @@ -308,30 +306,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 +342,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 +357,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 +387,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 +424,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 +434,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 +572,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -613,7 +583,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -633,44 +603,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 +649,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -690,20 +659,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 +700,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 +727,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 +744,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 +773,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -816,7 +785,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -853,8 +822,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 @@ -931,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 @@ -978,271 +1020,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 +1310,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 +1331,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 +1349,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1404,54 +1370,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 +1422,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 +1439,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 +1475,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 +1494,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1541,7 +1504,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1559,12 +1522,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 @@ -1624,19 +1587,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 +1608,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 +1628,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 +1640,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 +1762,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 +1773,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 +1793,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 +1815,62 @@ 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 + 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/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 - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.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 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 +2454,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 +2542,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-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 29d006913b..b32f64f179 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 @@ -1609,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 @@ -3858,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.optimized.wat b/tests/compiler/std/array.optimized.wat index 3432398cde..b4442e9acb 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -4,9 +4,9 @@ (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))) (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))) @@ -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))) @@ -718,38 +717,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 +815,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -839,7 +838,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -849,15 +848,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 @@ -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 @@ -922,30 +919,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 +955,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 +970,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 +1000,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 +1037,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 +1047,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 +1185,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1227,7 +1196,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1247,44 +1216,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 +1262,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1304,20 +1272,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 +1313,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 +1340,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 +1357,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 +1386,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1430,7 +1398,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1467,8 +1435,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,50 +1551,123 @@ 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) - 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 + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + 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 @@ -1642,226 +1683,152 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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) + (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 +1906,11 @@ 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 @@ -1964,52 +1923,49 @@ 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 +1973,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 +1990,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 +2016,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -2070,13 +2026,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.get $3 i32.const 4 i32.add i32.const 15 @@ -2092,7 +2048,7 @@ local.get $2 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub local.tee $4 i32.const 16 @@ -2102,23 +2058,23 @@ local.get $2 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.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -2142,12 +2098,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 +2113,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 +2128,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 +2145,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 +2160,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 +2170,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 +2187,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 +2207,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 +2239,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 +2338,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 @@ -2408,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 global.get $~lib/rt/itcms/white - local.get $3 + 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 @@ -2448,66 +2406,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 +2419,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 +2575,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 +2602,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 +2613,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 +2624,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 +2638,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 +2668,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 +2693,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 +2704,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 +2715,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 +2729,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 +2755,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 +2780,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 +2791,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 +2802,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 +2816,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 +2853,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 +2972,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 +3035,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 +3046,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 +3064,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 @@ -3483,7 +3353,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3547,7 +3417,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3608,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 @@ -3625,7 +3494,7 @@ if i32.const 1056 i32.const 1104 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -3642,9 +3511,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 @@ -3660,71 +3529,65 @@ local.get $2 i32.lt_u select - local.set $1 + else + local.get $1 end - local.get $1 - local.set $2 + local.tee $2 local.get $4 - local.tee $3 + local.tee $1 i32.const 20 i32.sub - local.tee $4 + local.tee $5 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 $5 local.get $2 i32.store offset=16 - local.get $3 br $__inlined_func$~lib/rt/itcms/__renew end local.get $2 - local.get $4 + local.get $5 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $6 - local.get $3 + local.tee $3 + local.get $1 local.get $2 - local.get $4 + local.get $5 i32.load offset=16 - local.tee $4 + local.tee $1 + local.get $1 local.get $2 - local.get $4 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy - local.get $6 + local.get $3 + local.set $1 end - local.tee $2 - local.get $5 - i32.add - i32.const 0 local.get $1 - local.get $5 - i32.sub - call $~lib/memory/memory.fill - local.get $2 - local.get $3 + 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 $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $1 + if + local.get $0 + 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 ) @@ -3762,7 +3625,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3781,12 +3644,12 @@ 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 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -3814,10 +3677,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) @@ -3837,7 +3703,7 @@ if i32.const 1344 i32.const 1104 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -4033,63 +3899,56 @@ 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.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 $4 + local.tee $6 i64.load local.tee $7 i64.const 8 @@ -4116,13 +3975,13 @@ i64.const 32 i64.rotr i64.store - local.get $4 local.get $6 + local.get $3 i64.const 16 i64.shr_u i64.const 281470681808895 i64.and - local.get $6 + local.get $3 i64.const 281470681808895 i64.and i64.const 16 @@ -4131,49 +3990,48 @@ 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 $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 +4041,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 +4089,7 @@ i32.rotr i32.store local.get $6 - local.get $8 + local.get $7 i32.store local.get $1 i32.const 2 @@ -4241,36 +4098,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 @@ -4290,7 +4147,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4316,7 +4173,7 @@ if i32.const 1344 i32.const 1104 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4412,8 +4269,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 +4400,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) @@ -4569,7 +4425,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4687,103 +4543,44 @@ 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) - (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 +4588,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 +4597,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 +4616,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 +4632,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 +4694,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 +4705,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 +4747,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 +4790,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 +4976,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 +4997,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 +5008,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 +5027,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 +5050,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 +5078,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 +5087,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -5303,52 +5099,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 +5169,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 +5203,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 +5270,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 +5298,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 +5317,7 @@ local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load local.tee $1 @@ -5519,13 +5329,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 +5346,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 +5448,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 +5490,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 +5499,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 +5518,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 +5534,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 +5596,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 +5607,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 +5649,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 +5692,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 +5878,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 +5899,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 +5910,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 +5929,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 +5952,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 +5980,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 +5989,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -6192,52 +6001,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 +6071,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 +6105,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 +6172,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 +6200,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 +6219,7 @@ local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load local.tee $1 @@ -6408,13 +6231,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 +6248,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) @@ -6467,7 +6290,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -6491,13 +6314,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 +6542,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 +6676,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 +6699,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -6888,7 +6711,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -6913,8 +6736,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 +6751,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 +6762,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 +6856,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 +6882,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -7064,50 +6893,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 +6952,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 +6978,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 +6992,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 +7024,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 +7052,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 +7071,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -7248,13 +7083,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 +7100,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 +7121,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 +7349,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 +7483,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 +7506,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -7683,7 +7518,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -7708,8 +7543,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 +7558,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 +7569,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 +7663,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 +7689,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -7859,50 +7700,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 +7759,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 +7785,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 +7799,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 +7831,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 +7859,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 +7878,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -8043,13 +7890,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 +7907,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) @@ -8080,33 +7927,82 @@ 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 $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 + local.get $1 i64.const 17 i64.shr_u - local.get $0 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,160 +8047,162 @@ 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 i32.load - local.tee $3 + local.tee $6 i32.store - local.get $6 + local.get $3 local.get $5 i32.load offset=4 - local.tee $6 + local.tee $3 i32.store offset=4 local.get $6 local.set $5 i32.const 2 global.set $~argumentsLength - local.get $3 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 + if (result i32) local.get $3 local.set $5 local.get $6 - local.set $3 + else + local.get $3 end - local.get $8 + 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 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) 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 $7 + 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 i32.add - local.get $3 + local.get $5 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 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 $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 $3 + 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 $5 + local.get $6 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 @@ -8335,33 +8233,33 @@ 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 $8 - local.get $6 + local.set $7 + 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 $7 + local.tee $8 i32.add local.get $0 - local.get $7 + local.get $8 i32.add i32.load i32.store @@ -8369,28 +8267,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 $8 - local.get $6 + local.get $7 + 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 @@ -8401,7 +8299,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 @@ -8410,7 +8308,7 @@ local.tee $8 i32.store local.get $7 - local.get $2 + local.get $6 i32.const 2 i32.shl local.get $4 @@ -8435,10 +8333,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 @@ -8447,10 +8345,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 @@ -8470,11 +8368,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 @@ -8492,10 +8390,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 +8418,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 +8504,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,71 +8528,87 @@ 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 $9 - local.get $5 + 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 $9 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 i32.add local.set $10 - i32.const 0 - local.set $5 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 + 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 $11 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + 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 @@ -8702,10 +8616,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 @@ -8716,16 +8630,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 @@ -8736,13 +8650,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 @@ -8750,21 +8664,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 @@ -8774,7 +8688,7 @@ local.get $0 local.get $13 local.get $10 - local.get $4 + local.get $5 i32.const 2 i32.shl local.tee $3 @@ -8783,53 +8697,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 @@ -8838,7 +8752,7 @@ if local.get $0 local.get $1 - local.get $4 + local.get $5 i32.const 2 i32.shl local.get $10 @@ -8846,22 +8760,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 @@ -8891,7 +8805,7 @@ if i32.const 1344 i32.const 1104 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -8929,15 +8843,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 +8895,7 @@ i32.const 7 i32.and i32.or - i32.const 1 + i32.eqz local.get $6 local.get $5 local.get $5 @@ -8992,8 +8905,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 +8942,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 +8999,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 +9013,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 +9054,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 @@ -9393,47 +9304,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 @@ -9454,7 +9364,7 @@ (local $7 i32) local.get $0 i32.load offset=4 - local.set $4 + local.set $6 local.get $0 i32.load offset=12 local.set $0 @@ -9480,7 +9390,7 @@ local.get $0 i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -9492,10 +9402,10 @@ 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 $6 i32.load call $~lib/util/number/itoa32 local.set $0 @@ -9506,7 +9416,7 @@ 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 @@ -9519,7 +9429,7 @@ i32.mul i32.const 11 i32.add - local.tee $7 + local.tee $3 i32.const 1 i32.shl i32.const 1 @@ -9527,19 +9437,19 @@ local.tee $0 i32.store loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s + local.get $4 + local.get $7 + i32.lt_s if local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.get $6 + local.get $4 i32.const 2 i32.shl - local.get $4 + local.get $6 i32.add i32.load call $~lib/util/number/itoa_buffered @@ -9563,30 +9473,30 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 1 i32.add - local.set $6 + local.set $4 br $for-loop|0 end end - local.get $7 local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.get $3 + local.get $7 i32.const 2 i32.shl - local.get $4 + local.get $6 i32.add i32.load call $~lib/util/number/itoa_buffered local.get $2 i32.add local.tee $1 - i32.gt_s + local.get $3 + i32.lt_s if local.get $0 local.get $1 @@ -9621,47 +9531,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 @@ -9680,7 +9589,7 @@ (local $7 i32) local.get $0 i32.load offset=4 - local.set $4 + local.set $6 local.get $0 i32.load offset=12 local.set $0 @@ -9706,7 +9615,7 @@ local.get $0 i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -9718,10 +9627,10 @@ 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 $6 i32.load call $~lib/util/number/utoa32 local.set $0 @@ -9732,7 +9641,7 @@ 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 @@ -9745,7 +9654,7 @@ i32.mul i32.const 10 i32.add - local.tee $7 + local.tee $3 i32.const 1 i32.shl i32.const 1 @@ -9753,19 +9662,19 @@ local.tee $0 i32.store loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s + local.get $4 + local.get $7 + i32.lt_s if local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.get $6 + local.get $4 i32.const 2 i32.shl - local.get $4 + local.get $6 i32.add i32.load call $~lib/util/number/itoa_buffered @@ -9789,30 +9698,30 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 1 i32.add - local.set $6 + local.set $4 br $for-loop|0 end end - local.get $7 local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.get $3 + local.get $7 i32.const 2 i32.shl - local.get $4 + local.get $6 i32.add i32.load call $~lib/util/number/itoa_buffered local.get $2 i32.add local.tee $1 - i32.gt_s + local.get $3 + i32.lt_s if local.get $0 local.get $1 @@ -9836,36 +9745,34 @@ (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 $6 - local.set $3 - local.get $6 + local.tee $3 i32.const 100000 i32.lt_u if (result i32) @@ -9934,107 +9841,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 +9954,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 48 @@ -10058,16 +9965,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 +9986,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 +9997,42 @@ i32.shl local.get $0 i32.add - local.tee $6 + local.tee $0 i32.load16_u - local.set $3 + local.set $9 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 $9 i32.const 1 i32.sub - local.set $3 + local.set $9 local.get $1 local.get $2 i64.add @@ -10135,8 +10040,8 @@ br $while-continue|3 end end - local.get $6 - local.get $3 + local.get $0 + local.get $9 i32.store16 local.get $5 return @@ -10144,7 +10049,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 +10058,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 +10090,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 $9 + 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 $9 + i32.const 1 + i32.sub + local.set $9 + local.get $1 + local.get $13 + i64.add + local.set $1 + br $while-continue|6 + end end + local.get $0 + local.get $9 + 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 +10190,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 +10217,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 +10258,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 +10286,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 +10304,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -10418,24 +10315,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 +10377,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 +10410,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 +10430,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 +10502,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 +10532,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 +10573,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 +10600,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 +10610,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 +10639,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 +10719,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 +10738,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 +10769,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) @@ -10963,37 +10850,35 @@ ) (func $~lib/array/Array#join (param $0 i32) (result i32) (local $1 i32) - (local $2 f64) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) + (local $7 f64) local.get $0 i32.load offset=4 - local.set $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 + 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 i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinFloatArray - local.get $1 + local.get $0 i32.const 1 i32.sub - local.tee $3 + local.tee $6 i32.const 0 i32.lt_s if @@ -11005,184 +10890,183 @@ local.set $0 br $__inlined_func$~lib/util/string/joinFloatArray end - block $folding-inner0 - local.get $3 - 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 - 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 - local.set $0 - br $__inlined_func$~lib/util/number/dtoa - end - local.get $2 - local.get $2 - f64.sub - f64.const 0 + 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.add + global.set $~lib/memory/__stack_pointer + 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 $2 - local.get $2 - f64.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - 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 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11824 - i32.const 11872 - local.get $2 - 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 $2 - 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 + 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 - 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 $3 - i32.const 11724 - i32.load - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 28 - i32.add - i32.mul - i32.const 28 + i32.const 4 i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 + 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 - local.get $6 - i32.gt_s + 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 - i32.const 1 - i32.shl local.get $1 - i32.add - local.get $6 - 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 $5 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 11728 - 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 $6 + 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 $6 - 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 $7 + 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.const 1 - i32.shl local.get $1 - i32.add - local.get $3 - i32.const 3 - i32.shl - local.get $4 - i32.add - f64.load - call $~lib/util/number/dtoa_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/joinFloatArray end global.get $~lib/memory/__stack_pointer @@ -11200,20 +11084,17 @@ 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) local.get $0 i32.load offset=4 - local.set $7 + local.set $2 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 @@ -11231,235 +11112,17 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $3 i64.const 0 i64.store - local.get $6 + local.get $3 i32.const 0 i32.store offset=8 - block $__inlined_func$~lib/util/string/joinStringArray - local.get $5 + block $__inlined_func$~lib/util/string/joinReferenceArray + 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 12 - 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 - 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 - br $__inlined_func$~lib/util/string/joinStringArray - end - loop $for-loop|0 - local.get $3 - local.get $5 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl - local.get $7 - i32.add - i32.load - local.tee $4 - i32.store offset=4 - local.get $4 - if - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.get $0 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $6 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.mul - local.get $0 - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=8 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $6 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl - local.get $7 - i32.add - i32.load - local.tee $4 - i32.store offset=4 - local.get $4 - if - local.get $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $4 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $4 - i32.add - local.set $2 - end - local.get $5 - if - local.get $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 2 - i32.shl - local.get $7 - i32.add - i32.load - local.tee $1 - i32.store offset=4 - local.get $1 - if - local.get $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - ) - (func $~lib/array/Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (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 - local.get $0 - i32.const 1 - i32.sub - local.tee $2 + local.tee $3 i32.const 0 i32.lt_s if @@ -11471,12 +11134,12 @@ 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 @@ -11500,35 +11163,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 +11200,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 @@ -11575,7 +11238,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 @@ -11610,59 +11272,56 @@ 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 end end - local.set $1 - local.get $0 - local.get $3 - local.get $1 local.get $2 i32.add local.tee $0 @@ -11670,7 +11329,6 @@ 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 @@ -11687,62 +11345,60 @@ i32.const 1 return end + local.get $0 local.get $1 i32.const 65535 i32.and - local.tee $2 - 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 end end - local.set $1 - local.get $0 - local.get $2 - local.get $1 + local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $0 ) (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) @@ -11904,7 +11560,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,41 +11614,39 @@ 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) - (local $2 i64) + (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 + (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-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 $3 @@ -12008,13 +11661,13 @@ local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $4 + local.get $3 + i32.eqz + if + block $__inlined_func$~lib/util/number/utoa64 (result i32) + local.get $2 i64.load - local.set $2 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -12022,251 +11675,251 @@ 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 - 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 9824 - local.set $0 - br $__inlined_func$~lib/util/number/utoa64 - end - local.get $2 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.wrap_i64 - local.tee $3 - local.tee $0 - i32.const 100000 + local.get $7 + 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 $7 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + 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 $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end + i32.const 10 + i32.ge_u + i32.const 1 + i32.add else local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add end - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $3 - local.get $1 - call $~lib/util/number/utoa32_dec_lut else - global.get $~lib/memory/__stack_pointer - local.get $2 - i64.const 1000000000000000 - i64.lt_u + 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 $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa64_dec_lut end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 20 - i32.add - i32.mul - i32.const 20 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $0 + local.tee $0 i32.const 1 i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store local.get $1 - i32.add - local.get $6 - i32.const 3 - i32.shl - local.get $4 - i32.add - i64.load - call $~lib/util/number/itoa_buffered + local.get $2 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 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 + 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 $6 + local.tee $0 i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $0 - i32.const 1 - i32.shl - local.get $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 + 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 + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + local.get $3 + 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 - 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 + local.get $5 i32.gt_s if 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 $1 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer @@ -12287,7 +11940,6 @@ (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 @@ -12325,7 +11977,6 @@ if local.get $1 i32.wrap_i64 - local.tee $4 local.tee $2 i32.const 100000 i32.lt_u @@ -12372,13 +12023,12 @@ i32.add end end - local.set $2 + local.get $3 + i32.add + local.set $3 local.get $0 - local.get $4 local.get $2 local.get $3 - i32.add - local.tee $0 call $~lib/util/number/utoa32_dec_lut else local.get $0 @@ -12435,10 +12085,10 @@ end local.get $3 i32.add - local.tee $0 + local.tee $3 call $~lib/util/number/utoa64_dec_lut end - local.get $0 + local.get $3 ) (func $~lib/array/Array#join (param $0 i32) (result i32) (local $1 i32) @@ -12448,31 +12098,29 @@ (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 + 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-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 $4 + local.tee $6 i32.const 0 i32.lt_s if @@ -12484,10 +12132,10 @@ local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $4 - i32.eqz - if + local.get $6 + i32.eqz + if + block $__inlined_func$~lib/util/number/itoa64 (result i32) local.get $5 i64.load i64.extend32_s @@ -12499,271 +12147,271 @@ 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 - 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.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 - 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 + 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 $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 $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 $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 + else 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 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 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 $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.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 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 - local.get $4 - i32.lt_s + 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 $0 - i32.const 1 - i32.shl local.get $1 - i32.add - local.get $3 - i32.const 3 + i32.const 1 i32.shl - local.get $5 - i32.add - i64.load - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 + i32.const 9520 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.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 $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 + 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 @@ -12782,7 +12430,6 @@ 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 @@ -12799,62 +12446,60 @@ i32.const 1 return end + local.get $0 local.get $1 i32.const 255 i32.and - local.tee $2 - 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 end end - local.set $1 - local.get $0 - local.get $2 - local.get $1 + local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $0 ) (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -12865,7 +12510,7 @@ (local $7 i32) local.get $0 i32.load offset=4 - local.set $4 + local.set $6 local.get $0 i32.load offset=12 local.set $0 @@ -12891,7 +12536,7 @@ local.get $0 i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -12903,10 +12548,10 @@ 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 $6 i32.load8_u call $~lib/util/number/utoa32 local.set $0 @@ -12917,7 +12562,7 @@ 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 @@ -12930,7 +12575,7 @@ i32.mul i32.const 10 i32.add - local.tee $7 + local.tee $3 i32.const 1 i32.shl i32.const 1 @@ -12938,9 +12583,9 @@ local.tee $0 i32.store loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s + local.get $4 + local.get $7 + i32.lt_s if local.get $2 i32.const 1 @@ -12972,28 +12617,28 @@ i32.add local.set $2 end - local.get $6 + local.get $4 i32.const 1 i32.add - local.set $6 + local.set $4 br $for-loop|0 end end - local.get $7 local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.get $3 - local.get $4 + local.get $6 + local.get $7 i32.add i32.load8_u call $~lib/util/number/itoa_buffered local.get $2 i32.add local.tee $1 - i32.gt_s + local.get $3 + i32.lt_s if local.get $0 local.get $1 @@ -13078,13 +12723,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 +12929,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 +13104,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 +13119,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 +13130,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 +13224,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 +13250,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -13610,48 +13261,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 +13318,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 +13344,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 +13358,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 +13390,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 +13418,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 +13437,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -13792,13 +13449,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 +13466,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 +13492,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 @@ -13859,61 +13519,25 @@ 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 $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 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 $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-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 @@ -13923,33 +13547,72 @@ end return end - local.get $0 - call $~lib/array/Array~visit return end unreachable 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 - call $~lib/rt/itcms/__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 - 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 + i32.load offset=4 + 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 @@ -13987,24 +13650,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 @@ -14012,16 +13675,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) @@ -14160,18 +13823,18 @@ 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 + local.tee $5 i32.load offset=4 local.tee $7 i32.store - local.get $5 local.get $6 + local.get $5 i32.load local.tee $5 i32.store offset=4 @@ -14301,18 +13964,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 @@ -14320,21 +13982,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 @@ -14342,17 +14006,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) @@ -14366,10 +14030,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 @@ -14458,8 +14122,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 @@ -14536,20 +14203,21 @@ (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 br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 9520 i32.store local.get $0 @@ -14558,7 +14226,7 @@ local.get $0 i32.load offset=12 local.set $0 - local.get $1 + local.get $3 i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer @@ -14567,17 +14235,17 @@ 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 block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $3 i32.const 0 i32.lt_s if @@ -14589,7 +14257,7 @@ local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - local.get $1 + local.get $3 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -14620,37 +14288,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 - i32.gt_s + local.get $3 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.const 2 i32.shl local.get $2 i32.add i32.load - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $5 call $~lib/array/Array#toString - local.set $3 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $5 i32.store offset=8 local.get $0 - local.get $3 + 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 @@ -14659,33 +14327,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 $3 i32.const 2 i32.shl 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 @@ -14719,18 +14387,74 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 f64) - (local $10 i32) - (local $11 f32) + (local $9 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 i64.const 0 @@ -14846,7 +14570,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 @@ -14855,7 +14579,7 @@ 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 @@ -14865,74 +14589,68 @@ 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 - i32.const 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 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 - i32.const 0 - i32.const 1 - call $~lib/memory/memory.fill - local.get $0 - local.get $2 + local.get $65 i32.store - local.get $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $65 + if + local.get $2 + local.get $65 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end 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 i32.store @@ -14952,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 @@ -14965,12 +14683,12 @@ i32.const 6 i32.const 1728 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 @@ -14981,7 +14699,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 0 i32.const 2147483647 @@ -14992,12 +14710,12 @@ i32.const 6 i32.const 1760 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 @@ -15008,7 +14726,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.const 0 i32.const -3 @@ -15019,12 +14737,12 @@ i32.const 6 i32.const 1792 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 @@ -15035,7 +14753,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 2 i32.const -2 i32.const 2147483647 @@ -15046,12 +14764,12 @@ 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 offset=8 - local.get $1 local.get $0 + local.get $2 call $std/array/isArraysEqual i32.eqz if @@ -15062,7 +14780,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 1 i32.const 0 @@ -15073,12 +14791,12 @@ i32.const 6 i32.const 1856 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 @@ -15099,39 +14817,39 @@ i32.store offset=12 local.get $0 i32.load offset=4 - local.set $4 + local.set $65 i32.const 1 local.get $0 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $66 + local.get $66 i32.const 1 i32.gt_s select - local.set $1 + local.set $2 i32.const 3 - local.get $2 - local.get $2 + local.get $66 + local.get $66 i32.const 3 i32.gt_s select - local.set $2 + local.set $66 loop $for-loop|0 - local.get $1 local.get $2 + local.get $66 i32.lt_s if - local.get $1 + local.get $2 i32.const 2 i32.shl - local.get $4 + local.get $65 i32.add i32.const 1 i32.store - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end @@ -15140,12 +14858,12 @@ i32.const 7 i32.const 1936 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 @@ -15157,35 +14875,35 @@ unreachable end local.get $0 - local.tee $1 + local.tee $2 i32.load offset=4 - local.set $0 + local.set $65 i32.const 0 - local.get $1 - i32.load offset=12 - local.tee $2 local.get $2 + i32.load offset=12 + local.tee $66 + local.get $66 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 $66 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $65 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 @@ -15197,7 +14915,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 call $std/array/isArraysEqual i32.eqz @@ -15209,37 +14927,37 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=4 - local.set $4 + local.set $65 i32.const 0 - local.get $1 - i32.load offset=12 - local.tee $2 local.get $2 + i32.load offset=12 + local.tee $66 + local.get $66 i32.const 0 i32.gt_s select local.set $0 - local.get $2 + local.get $66 i32.const 3 i32.sub - local.tee $2 + local.tee $66 i32.const 0 - local.get $2 + local.get $66 i32.const 0 i32.gt_s select - local.set $2 - loop $for-loop|05 + local.set $66 + loop $for-loop|03 local.get $0 - local.get $2 + local.get $66 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $65 i32.add i32.const 1 i32.store @@ -15247,7 +14965,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|05 + br $for-loop|03 end end i32.const 5 @@ -15259,7 +14977,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 call $std/array/isArraysEqual i32.eqz @@ -15271,12 +14989,12 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=4 - local.set $4 - local.get $1 + local.set $65 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $66 i32.const 2 i32.sub local.tee $0 @@ -15285,24 +15003,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 $66 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $65 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 @@ -15314,7 +15032,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 call $std/array/isArraysEqual i32.eqz @@ -15326,34 +15044,34 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=4 - local.set $4 + local.set $65 i32.const 1 - local.get $1 - i32.load offset=12 - local.tee $2 local.get $2 + i32.load offset=12 + local.tee $66 + local.get $66 i32.const 1 i32.gt_s select local.set $0 i32.const 0 - local.get $2 - local.get $2 + local.get $66 + local.get $66 i32.const 0 i32.gt_s select - local.set $2 - loop $for-loop|09 + local.set $66 + loop $for-loop|07 local.get $0 - local.get $2 + local.get $66 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $65 i32.add i32.const 0 i32.store @@ -15361,7 +15079,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|09 + br $for-loop|07 end end i32.const 5 @@ -15373,7 +15091,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 call $std/array/isArraysEqual i32.eqz @@ -15747,34 +15465,34 @@ 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 @@ -15847,23 +15565,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 $2 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 local.get $2 + 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 $0 + local.tee $65 i32.store - local.get $0 + local.get $65 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15877,9 +15595,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $65 i32.store - local.get $0 + local.get $65 i32.load offset=12 i32.const 3 i32.ne @@ -15891,7 +15609,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=12 i32.const 3 i32.ne @@ -15908,19 +15626,19 @@ i32.const 3 i32.const 2272 call $~lib/rt/__newArray - local.set $0 + local.set $65 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $65 i32.store offset=8 - local.get $1 - local.get $0 + 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 $0 + local.tee $65 i32.store - local.get $0 + local.get $65 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15932,7 +15650,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -15945,7 +15663,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -15958,7 +15676,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -15971,30 +15689,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 + local.tee $2 global.get $std/array/arr - local.tee $0 + local.tee $65 i32.store - local.get $1 - local.get $0 local.get $2 + local.get $65 + 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 $0 + local.tee $65 i32.store - local.get $0 + local.get $65 call $std/array/internalCapacity i32.const 8 i32.ne @@ -16006,7 +15724,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.load offset=12 i32.const 2 i32.ne @@ -16018,7 +15736,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=12 i32.const 5 i32.ne @@ -16030,7 +15748,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -16043,7 +15761,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -16056,7 +15774,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -16069,7 +15787,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 3 call $~lib/array/Array#__get i32.const 46 @@ -16082,7 +15800,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 4 call $~lib/array/Array#__get i32.const 47 @@ -16095,10 +15813,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 @@ -16116,9 +15834,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 @@ -16129,17 +15847,17 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 global.get $std/array/arr - local.tee $0 + local.tee $65 i32.store offset=8 - local.get $1 local.get $2 local.get $0 + local.get $65 call $~lib/array/Array#concat - local.tee $0 + local.tee $2 i32.store offset=16 - local.get $0 + local.get $2 i32.load offset=12 i32.const 3 i32.ne @@ -16151,7 +15869,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.load offset=12 if i32.const 0 @@ -16174,21 +15892,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 $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 @@ -16213,21 +15931,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 $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 @@ -16252,21 +15970,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 $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 @@ -16291,21 +16009,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 $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 @@ -16330,21 +16048,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 $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 @@ -16369,21 +16087,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 $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 @@ -16408,21 +16126,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 $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 @@ -16447,21 +16165,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 $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 @@ -16486,21 +16204,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 $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 @@ -16525,21 +16243,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 $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 @@ -16564,21 +16282,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 $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 @@ -16603,21 +16321,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 $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 @@ -16864,44 +16582,44 @@ 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 $2 + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable end - local.get $5 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $65 i32.load - local.get $4 - local.get $4 + local.get $65 + local.get $65 i32.const 4 i32.add - local.get $0 + local.get $2 i32.const 1 i32.sub - local.tee $1 + local.tee $2 i32.const 2 i32.shl - local.tee $0 + local.tee $67 call $~lib/memory/memory.copy - local.get $0 - local.get $4 + local.get $65 + local.get $67 i32.add i32.const 0 i32.store - local.get $5 - local.get $1 + local.get $0 + local.get $2 i32.store offset=12 global.set $std/array/i global.get $std/array/i @@ -17122,26 +16840,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 $2 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 $65 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $65 i32.store offset=8 - local.get $0 - local.get $1 + local.get $2 + local.get $65 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17154,23 +16872,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 $2 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 $65 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $65 i32.store offset=8 - local.get $0 - local.get $1 + local.get $2 + local.get $65 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17183,23 +16901,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 $2 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 $65 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $65 i32.store offset=8 - local.get $0 - local.get $1 + local.get $2 + local.get $65 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17212,14 +16930,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 $2 i32.store offset=16 - local.get $0 local.get $2 + local.get $0 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17232,23 +16950,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 $2 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 $65 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $65 i32.store offset=8 - local.get $0 - local.get $1 + local.get $2 + local.get $65 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17261,23 +16979,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 $2 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 $65 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $65 i32.store offset=8 - local.get $0 - local.get $1 + local.get $2 + local.get $65 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17290,23 +17008,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 $2 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 $65 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $65 i32.store offset=8 - local.get $0 - local.get $1 + local.get $2 + local.get $65 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17318,15 +17036,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 $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store - local.get $0 + local.get $2 i32.load offset=12 if i32.const 0 @@ -17336,7 +17054,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 10 i32.const 2147483647 call $~lib/array/Array#slice @@ -17356,58 +17074,56 @@ 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 $6 - i32.const 0 - local.set $0 - local.get $1 + local.set $2 + 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 $5 - local.get $1 + local.set $65 + local.get $0 i32.const 1 i32.sub - local.set $4 + local.set $0 loop $while-continue|0 - local.get $0 - local.get $5 + local.get $1 + local.get $65 i32.lt_u if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $2 i32.add - local.tee $1 + local.tee $66 i32.load - local.set $2 - local.get $1 - local.get $4 + local.set $67 + local.get $66 local.get $0 + local.get $1 i32.sub i32.const 2 i32.shl - local.get $6 + local.get $2 i32.add - local.tee $1 + local.tee $66 i32.load i32.store - local.get $1 - local.get $2 + 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 @@ -17522,25 +17238,28 @@ 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.set $2 + local.get $1 i32.load offset=12 - local.set $1 - loop $for-loop|010 + local.set $0 + loop $for-loop|08 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s if + local.get $1 local.get $2 - local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 - local.get $0 + local.get $2 i32.sub i32.const 1 i32.sub @@ -17553,11 +17272,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 - br $for-loop|010 + local.set $2 + br $for-loop|08 end end global.get $~lib/memory/__stack_pointer @@ -17571,25 +17290,28 @@ 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.set $2 + local.get $1 i32.load offset=12 - local.set $1 + local.set $0 loop $for-loop|1 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s if + local.get $1 local.get $2 - local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 - local.get $0 + local.get $2 i32.sub i32.const 1 i32.sub @@ -17602,10 +17324,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 @@ -17620,25 +17342,28 @@ 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.set $2 + local.get $1 i32.load offset=12 - local.set $1 + local.set $0 loop $for-loop|2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s if + local.get $1 local.get $2 - local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 - local.get $0 + local.get $2 i32.sub i32.const 1 i32.sub @@ -17651,10 +17376,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 @@ -17670,24 +17395,24 @@ i32.store local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $0 i32.store offset=20 i32.const 0 - local.set $0 - local.get $2 + local.set $2 + local.get $0 i32.load offset=12 local.set $1 loop $for-loop|3 - local.get $0 local.get $1 - i32.lt_s + local.get $2 + i32.gt_s if - local.get $2 local.get $0 - call $~lib/array/Array#__get local.get $2 - i32.load offset=12 + call $~lib/array/Array#__get local.get $0 + i32.load offset=12 + local.get $2 i32.sub i32.const 1 i32.sub @@ -17700,10 +17425,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 @@ -17719,24 +17444,24 @@ i32.store local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $0 i32.store offset=24 i32.const 0 - local.set $0 - local.get $2 + local.set $2 + local.get $0 i32.load offset=12 local.set $1 loop $for-loop|4 - local.get $0 local.get $1 - i32.lt_s + local.get $2 + i32.gt_s if - local.get $2 local.get $0 - call $~lib/array/Array#__get local.get $2 - i32.load offset=12 + call $~lib/array/Array#__get local.get $0 + i32.load offset=12 + local.get $2 i32.sub i32.const 1 i32.sub @@ -17749,10 +17474,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 @@ -17768,24 +17493,24 @@ i32.store local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $0 i32.store offset=28 i32.const 0 - local.set $0 - local.get $2 + local.set $2 + local.get $0 i32.load offset=12 local.set $1 loop $for-loop|5 - local.get $0 local.get $1 - i32.lt_s + local.get $2 + i32.gt_s if - local.get $2 local.get $0 - call $~lib/array/Array#__get local.get $2 - i32.load offset=12 + call $~lib/array/Array#__get local.get $0 + i32.load offset=12 + local.get $2 i32.sub i32.const 1 i32.sub @@ -17798,10 +17523,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|5 end end @@ -17809,7 +17534,7 @@ global.get $std/array/arr local.tee $1 i32.store - i32.const 0 + i32.const -1 local.set $0 block $__inlined_func$~lib/array/Array#indexOf local.get $1 @@ -17820,20 +17545,17 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf - end + br_if $__inlined_func$~lib/array/Array#indexOf local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|011 - local.get $0 + loop $while-continue|013 local.get $2 - i32.lt_s + local.get $3 + i32.gt_s if - local.get $0 + local.get $3 + local.tee $0 i32.const 2 i32.shl local.get $1 @@ -17845,8 +17567,8 @@ local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|011 + local.set $3 + br $while-continue|013 end end i32.const -1 @@ -17867,9 +17589,9 @@ global.get $std/array/arr local.tee $1 i32.store - i32.const 0 + i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf12 + block $__inlined_func$~lib/array/Array#indexOf39 local.get $1 i32.load offset=12 local.tee $2 @@ -17878,20 +17600,17 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf12 - end + br_if $__inlined_func$~lib/array/Array#indexOf39 local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|013 - local.get $0 + loop $while-continue|041 local.get $2 - i32.lt_s + local.get $9 + i32.gt_s if - local.get $0 + local.get $9 + local.tee $0 i32.const 2 i32.shl local.get $1 @@ -17899,12 +17618,12 @@ i32.load i32.const 42 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf12 + br_if $__inlined_func$~lib/array/Array#indexOf39 local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|013 + local.set $9 + br $while-continue|041 end end i32.const -1 @@ -17927,9 +17646,9 @@ global.get $std/array/arr local.tee $1 i32.store - i32.const 0 + i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf14 + block $__inlined_func$~lib/array/Array#indexOf42 local.get $1 i32.load offset=12 local.tee $2 @@ -17938,20 +17657,17 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf14 - end + br_if $__inlined_func$~lib/array/Array#indexOf42 local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|015 - local.get $0 + loop $while-continue|044 local.get $2 - i32.lt_s + local.get $8 + i32.gt_s if - local.get $0 + local.get $8 + local.tee $0 i32.const 2 i32.shl local.get $1 @@ -17959,12 +17675,12 @@ i32.load i32.const 45 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf14 + br_if $__inlined_func$~lib/array/Array#indexOf42 local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|015 + local.set $8 + br $while-continue|044 end end i32.const -1 @@ -17985,52 +17701,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store i32.const 100 - local.set $0 - block $__inlined_func$~lib/array/Array#indexOf16 - local.get $1 + local.set $2 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf45 + local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 100 i32.le_s i32.const 1 - local.get $2 + local.get $3 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#indexOf45 + local.get $0 i32.load offset=4 - local.set $1 - loop $while-continue|017 - local.get $0 + local.set $0 + loop $while-continue|047 local.get $2 + local.get $3 i32.lt_s if - local.get $0 + local.get $2 + local.tee $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#indexOf16 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf45 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|017 + local.set $2 + br $while-continue|047 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 @@ -18045,60 +17760,58 @@ 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#indexOf18 - local.get $1 + i32.const -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 - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf18 - end - 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|019 - 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#indexOf18 - 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|019 + 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 @@ -18113,60 +17826,58 @@ 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#indexOf20 - local.get $1 + i32.const -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 - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf20 - end - 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|021 - 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#indexOf20 - 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|021 + 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 @@ -18181,60 +17892,58 @@ 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#indexOf22 - local.get $1 + i32.const -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 - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf22 - end - 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|023 - 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#indexOf22 - 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|023 + 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 @@ -18251,9 +17960,9 @@ global.get $std/array/arr local.tee $1 i32.store - i32.const 0 + i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf24 + block $__inlined_func$~lib/array/Array#indexOf57 local.get $1 i32.load offset=12 local.tee $2 @@ -18262,20 +17971,17 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf24 - end + br_if $__inlined_func$~lib/array/Array#indexOf57 local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|025 - local.get $0 + loop $while-continue|059 local.get $2 - i32.lt_s + local.get $7 + i32.gt_s if - local.get $0 + local.get $7 + local.tee $0 i32.const 2 i32.shl local.get $1 @@ -18283,12 +17989,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf24 + br_if $__inlined_func$~lib/array/Array#indexOf57 local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|025 + local.set $7 + br $while-continue|059 end end i32.const -1 @@ -18309,52 +18015,51 @@ 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#indexOf26 - local.get $1 + local.set $2 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf60 + local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 1 i32.le_s i32.const 1 - local.get $2 + local.get $3 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#indexOf60 + local.get $0 i32.load offset=4 - local.set $1 - loop $while-continue|027 - local.get $0 + local.set $0 + loop $while-continue|062 local.get $2 + local.get $3 i32.lt_s if - local.get $0 + local.get $2 + local.tee $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#indexOf26 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf60 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|027 + local.set $2 + br $while-continue|062 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 +18074,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store i32.const 2 - local.set $0 - block $__inlined_func$~lib/array/Array#indexOf28 - local.get $1 + local.set $2 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf63 + local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $2 + local.get $3 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#indexOf63 + local.get $0 i32.load offset=4 - local.set $1 - loop $while-continue|029 - local.get $0 + local.set $0 + loop $while-continue|065 local.get $2 + local.get $3 i32.lt_s if - local.get $0 + local.get $2 + local.tee $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#indexOf28 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf63 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|029 + local.set $2 + br $while-continue|065 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 @@ -18432,37 +18136,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 $4 + local.tee $2 i32.const 0 i32.le_s i32.const 1 - local.get $4 + 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|010 - local.get $0 - local.get $4 - i32.lt_s + local.set $0 + loop $while-continue|067 + local.get $2 + local.get $6 + i32.gt_s if - local.get $0 + local.get $6 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add f32.load f32.const nan:0x400000 @@ -18471,8 +18173,8 @@ local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|010 + local.set $6 + br $while-continue|067 end end i32.const -1 @@ -18494,37 +18196,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 $4 + local.tee $2 i32.const 0 i32.le_s i32.const 1 - local.get $4 + 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|037 - local.get $0 - local.get $4 - i32.lt_s + local.set $0 + loop $while-continue|069 + local.get $2 + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 local.tee $1 i32.const 3 i32.shl - local.get $2 + local.get $0 i32.add f64.load f64.const nan:0x8000000000000 @@ -18533,8 +18233,8 @@ local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|037 + local.set $5 + br $while-continue|069 end end i32.const -1 @@ -18557,65 +18257,65 @@ 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 - i32.const -1 + local.tee $0 local.set $1 + i32.const -1 + local.set $3 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 $1 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 $1 + local.get $0 + local.get $1 + i32.le_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|00 - local.get $2 + local.set $1 + loop $while-continue|01 + local.get $0 i32.const 0 i32.ge_s if - local.get $2 - local.tee $1 + local.get $0 + local.tee $3 i32.const 2 i32.shl - local.get $4 + 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 $3 i32.const 1 i32.sub - local.set $2 - br $while-continue|00 + local.set $0 + br $while-continue|01 end end i32.const -1 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.const 3 i32.ne if @@ -18628,61 +18328,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.tee $0 local.set $1 - block $__inlined_func$~lib/array/Array#lastIndexOf5 - local.get $4 + i32.const -1 + local.set $3 + block $__inlined_func$~lib/array/Array#lastIndexOf6 + local.get $0 i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf5 - local.get $2 - local.get $4 + br_if $__inlined_func$~lib/array/Array#lastIndexOf6 + local.get $0 + local.get $1 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 $1 + local.get $0 + local.get $1 + i32.le_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|07 + local.get $0 i32.const 0 i32.ge_s if - local.get $2 - local.tee $1 + local.get $0 + local.tee $3 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#lastIndexOf6 + local.get $3 i32.const 1 i32.sub - local.set $2 - br $while-continue|06 + local.set $0 + br $while-continue|07 end end i32.const -1 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.const -1 i32.ne if @@ -18693,21 +18393,20 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf7 - local.get $0 + i32.const -1 + 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 - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/array/Array#lastIndexOf7 - end - 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 @@ -18715,7 +18414,7 @@ local.get $0 i32.load offset=4 local.set $2 - loop $while-continue|030 + loop $while-continue|071 local.get $1 i32.const 0 i32.ge_s @@ -18728,12 +18427,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf7 + br_if $__inlined_func$~lib/array/Array#lastIndexOf8 local.get $1 i32.const 1 i32.sub local.set $1 - br $while-continue|030 + br $while-continue|071 end end i32.const -1 @@ -18750,21 +18449,19 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf31 + i32.const -1 + 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 - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/array/Array#lastIndexOf31 - end - 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 @@ -18772,7 +18469,7 @@ local.get $0 i32.load offset=4 local.set $2 - loop $while-continue|032 + loop $while-continue|074 local.get $1 i32.const 0 i32.ge_s @@ -18785,12 +18482,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf31 + br_if $__inlined_func$~lib/array/Array#lastIndexOf72 local.get $1 i32.const 1 i32.sub local.set $1 - br $while-continue|032 + br $while-continue|074 end end i32.const -1 @@ -18805,24 +18502,23 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf33 + i32.const -1 + 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 - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/array/Array#lastIndexOf33 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf75 + local.get $0 i32.const 2 i32.sub local.set $1 - local.get $0 + local.get $2 i32.load offset=4 - local.set $2 - loop $while-continue|034 + local.set $0 + loop $while-continue|077 local.get $1 i32.const 0 i32.ge_s @@ -18830,17 +18526,17 @@ 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/array/Array#lastIndexOf33 + br_if $__inlined_func$~lib/array/Array#lastIndexOf75 local.get $1 i32.const 1 i32.sub local.set $1 - br $while-continue|034 + br $while-continue|077 end end i32.const -1 @@ -18855,25 +18551,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#lastIndexOf78 + 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#lastIndexOf78 + 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|080 local.get $0 i32.const 0 i32.ge_s @@ -18886,12 +18579,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf35 + br_if $__inlined_func$~lib/array/Array#lastIndexOf78 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|080 end end i32.const -1 @@ -18910,46 +18603,45 @@ 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 $1 + i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf37 - local.get $1 + block $__inlined_func$~lib/array/Array#indexOf9 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $3 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#indexOf9 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|038 - local.get $0 - local.get $2 + local.set $2 + loop $while-continue|010 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 + local.get $1 + local.tee $0 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 + br_if $__inlined_func$~lib/array/Array#indexOf9 local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|038 + local.set $1 + br $while-continue|010 end end i32.const -1 @@ -18968,46 +18660,45 @@ 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 $1 + i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf39 - local.get $1 + block $__inlined_func$~lib/array/Array#indexOf12 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $3 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#indexOf12 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|040 - local.get $0 - local.get $2 + local.set $2 + loop $while-continue|014 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 + local.get $1 + local.tee $0 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 + br_if $__inlined_func$~lib/array/Array#indexOf12 local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|040 + local.set $1 + br $while-continue|014 end end i32.const -1 @@ -19026,46 +18717,45 @@ 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 $1 + i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf41 - local.get $1 + block $__inlined_func$~lib/array/Array#indexOf16 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $3 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#indexOf16 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|042 - local.get $0 - local.get $2 + local.set $2 + loop $while-continue|017 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 + local.get $1 + local.tee $0 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 + br_if $__inlined_func$~lib/array/Array#indexOf16 local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|042 + local.set $1 + br $while-continue|017 end end i32.const -1 @@ -19084,46 +18774,45 @@ 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 $1 + i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf43 - local.get $1 + block $__inlined_func$~lib/array/Array#indexOf19 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 100 i32.le_s i32.const 1 - local.get $2 + local.get $3 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#indexOf19 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|044 - local.get $0 - local.get $2 + local.set $2 + loop $while-continue|020 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 + local.get $1 + local.tee $0 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 + br_if $__inlined_func$~lib/array/Array#indexOf19 local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|044 + local.set $1 + br $while-continue|020 end end i32.const -1 @@ -19144,21 +18833,19 @@ global.get $std/array/arr local.tee $1 i32.store - block $__inlined_func$~lib/array/Array#indexOf45 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf22 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -100 i32.le_s i32.const 1 - local.get $2 + local.get $3 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf45 - end - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf22 + local.get $3 i32.const 100 i32.sub local.tee $0 @@ -19167,16 +18854,17 @@ i32.const 0 i32.gt_s select - local.set $0 + local.set $2 local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|046 - local.get $0 + loop $while-continue|023 local.get $2 + local.get $3 i32.lt_s if - local.get $0 + local.get $2 + local.tee $0 i32.const 2 i32.shl local.get $1 @@ -19184,12 +18872,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf45 + br_if $__inlined_func$~lib/array/Array#indexOf22 local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|046 + local.set $2 + br $while-continue|023 end end i32.const -1 @@ -19210,21 +18898,19 @@ global.get $std/array/arr local.tee $1 i32.store - block $__inlined_func$~lib/array/Array#indexOf47 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf25 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -2 i32.le_s i32.const 1 - local.get $2 + local.get $3 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf47 - end - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf25 + local.get $3 i32.const 2 i32.sub local.tee $0 @@ -19233,16 +18919,17 @@ i32.const 0 i32.gt_s select - local.set $0 + local.set $2 local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|048 - local.get $0 + loop $while-continue|026 local.get $2 + local.get $3 i32.lt_s if - local.get $0 + local.get $2 + local.tee $0 i32.const 2 i32.shl local.get $1 @@ -19250,12 +18937,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf47 + br_if $__inlined_func$~lib/array/Array#indexOf25 local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|048 + local.set $2 + br $while-continue|026 end end i32.const -1 @@ -19276,21 +18963,19 @@ global.get $std/array/arr local.tee $1 i32.store - block $__inlined_func$~lib/array/Array#indexOf49 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf28 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -4 i32.le_s i32.const 1 - local.get $2 + local.get $3 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf49 - end - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf28 + local.get $3 i32.const 4 i32.sub local.tee $0 @@ -19299,16 +18984,17 @@ i32.const 0 i32.gt_s select - local.set $0 + local.set $2 local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|050 - local.get $0 + loop $while-continue|029 local.get $2 + local.get $3 i32.lt_s if - local.get $0 + local.get $2 + local.tee $0 i32.const 2 i32.shl local.get $1 @@ -19316,12 +19002,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf49 + br_if $__inlined_func$~lib/array/Array#indexOf28 local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|050 + local.set $2 + br $while-continue|029 end end i32.const -1 @@ -19340,46 +19026,45 @@ 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 $1 + i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf51 - local.get $1 + block $__inlined_func$~lib/array/Array#indexOf31 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $3 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#indexOf31 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|052 - local.get $0 - local.get $2 + local.set $2 + loop $while-continue|032 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 + local.get $1 + local.tee $0 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 + br_if $__inlined_func$~lib/array/Array#indexOf31 local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|052 + local.set $1 + br $while-continue|032 end end i32.const -1 @@ -19398,46 +19083,45 @@ 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 $1 + i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf53 - local.get $1 + block $__inlined_func$~lib/array/Array#indexOf34 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 1 i32.le_s i32.const 1 - local.get $2 + local.get $3 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#indexOf34 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|054 - local.get $0 - local.get $2 + local.set $2 + loop $while-continue|035 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 + local.get $1 + local.tee $0 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 + br_if $__inlined_func$~lib/array/Array#indexOf34 local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|054 + local.set $1 + br $while-continue|035 end end i32.const -1 @@ -19456,46 +19140,45 @@ 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 $1 + i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf55 - local.get $1 + block $__inlined_func$~lib/array/Array#indexOf37 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $2 + local.get $3 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#indexOf37 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|056 - local.get $0 - local.get $2 + local.set $2 + loop $while-continue|038 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 + local.get $1 + local.tee $0 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 + br_if $__inlined_func$~lib/array/Array#indexOf37 local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|056 + local.set $1 + br $while-continue|038 end end i32.const -1 @@ -19512,59 +19195,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|047 - 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 - 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 $11 - local.get $11 - f32.ne - local.get $11 + 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/array/Array#includes drop - local.get $0 + local.get $27 i32.const 1 i32.add - local.set $0 - br $while-continue|047 + local.set $27 + br $while-continue|082 end end i32.const 0 @@ -19578,59 +19258,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|04857 - 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 - 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 $9 - local.get $9 - f64.ne - local.get $9 + local.tee $10 f64.const nan:0x8000000000000 f64.eq - select + 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|04857 + local.set $26 + br $while-continue|084 end end i32.const 0 @@ -19725,9 +19402,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 +19417,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 +19439,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 +19462,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 +19477,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 +19499,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 +19522,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 +19537,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 +19559,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 +19582,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 +19597,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 +19619,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 +19642,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 +19657,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 +19679,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 +19702,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 +19717,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 +19739,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 +19762,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 +19777,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 +19799,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 +19822,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 +19837,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 +19859,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 +19882,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 +19897,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 +19919,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 +19942,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 +19957,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 +19979,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 +20002,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 +20017,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 +20039,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 +20062,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 +20077,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 +20099,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 +20122,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 +20137,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 +20159,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 +20182,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 +20197,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 +20219,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 +20242,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 +20260,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=12 if i32.const 0 @@ -20735,34 +20412,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 @@ -20772,13 +20449,13 @@ 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 i32.const 0 - local.get $0 + local.get $1 i32.load offset=12 local.tee $3 local.get $3 @@ -20786,55 +20463,55 @@ i32.gt_s select local.set $5 - local.get $1 + local.get $2 i32.const 1 local.get $3 local.get $5 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 $6 i32.store - local.get $7 + local.get $6 i32.load offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.tee $2 + local.tee $7 local.get $5 i32.const 2 i32.shl i32.add - local.tee $1 - local.get $6 + local.tee $8 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy local.get $3 + local.get $2 local.get $5 - local.get $6 i32.add local.tee $5 i32.ne if - local.get $1 + local.get $8 local.get $5 i32.const 2 i32.shl - local.get $2 + local.get $7 i32.add local.get $3 local.get $5 @@ -20843,18 +20520,18 @@ i32.shl call $~lib/memory/memory.copy end - local.get $0 + local.get $1 local.get $3 - local.get $6 + 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 $6 i32.store offset=4 - local.get $7 + local.get $6 i32.load offset=12 i32.const 1 i32.ne @@ -20867,12 +20544,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 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 +20559,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load i32.const 1 i32.ne @@ -20894,7 +20571,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=12 i32.const 2 i32.ne @@ -20906,7 +20583,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get if @@ -20918,7 +20595,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 +20656,53 @@ 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.get $0 i32.load offset=12 - local.set $2 + local.set $1 block $__inlined_func$~lib/array/Array#findIndex - loop $for-loop|059 - local.get $2 - local.get $4 + loop $for-loop|093 + local.get $1 + local.get $0 i32.load offset=12 - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.gt_s + i32.lt_s select - local.get $0 + local.get $61 i32.gt_s if - local.get $4 - i32.load offset=4 local.get $0 + i32.load offset=4 + local.get $61 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $61 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 $61 i32.const 1 i32.add - local.set $0 - br $for-loop|059 + local.set $61 + br $for-loop|093 end end i32.const -1 - local.set $0 + local.set $61 end - local.get $0 + local.get $61 global.set $std/array/i global.get $std/array/i if @@ -21041,55 +20716,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 i32.store local.get $0 i32.const 6176 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 + local.get $1 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex60 - loop $for-loop|061 - local.get $2 - local.get $4 - i32.load offset=12 - local.tee $1 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex95 + loop $for-loop|097 + local.get $0 local.get $1 + i32.load offset=12 + local.tee $2 + local.get $0 local.get $2 - i32.gt_s + i32.lt_s select - local.get $0 + local.get $59 i32.gt_s if - local.get $4 + local.get $1 i32.load offset=4 - local.get $0 + local.get $59 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $59 + local.get $1 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#findIndex95 + local.get $59 i32.const 1 i32.add - local.set $0 - br $for-loop|061 + local.set $59 + br $for-loop|097 end end i32.const -1 - local.set $0 + local.set $59 end - local.get $0 + local.get $59 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -21105,55 +20778,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 i32.store local.get $0 i32.const 6208 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 + local.get $1 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex62 - loop $for-loop|063 - local.get $2 - local.get $4 - i32.load offset=12 - local.tee $1 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex99 + loop $for-loop|0101 + local.get $0 local.get $1 + i32.load offset=12 + local.tee $2 + local.get $0 local.get $2 - i32.gt_s + i32.lt_s select - local.get $0 + local.get $58 i32.gt_s if - local.get $4 + local.get $1 i32.load offset=4 - local.get $0 + local.get $58 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $58 + local.get $1 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#findIndex99 + local.get $58 i32.const 1 i32.add - local.set $0 - br $for-loop|063 + local.set $58 + br $for-loop|0101 end end i32.const -1 - local.set $0 + local.set $58 end - local.get $0 + local.get $58 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21169,55 +20840,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 i32.store local.get $0 i32.const 6240 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 + local.get $1 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex64 - loop $for-loop|065 - local.get $2 - local.get $4 - i32.load offset=12 - local.tee $1 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex103 + loop $for-loop|0105 + local.get $0 local.get $1 + i32.load offset=12 + local.tee $2 + local.get $0 local.get $2 - i32.gt_s + i32.lt_s select - local.get $0 + local.get $57 i32.gt_s if - local.get $4 + local.get $1 i32.load offset=4 - local.get $0 + local.get $57 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $57 + local.get $1 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#findIndex103 + local.get $57 i32.const 1 i32.add - local.set $0 - br $for-loop|065 + local.set $57 + br $for-loop|0105 end end i32.const -1 - local.set $0 + local.set $57 end - local.get $0 + local.get $57 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21249,55 +20918,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 i32.store local.get $0 i32.const 6272 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 + local.get $1 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex66 - loop $for-loop|067 - local.get $2 - local.get $4 - i32.load offset=12 - local.tee $1 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex108 + loop $for-loop|0110 + local.get $0 local.get $1 + i32.load offset=12 + local.tee $2 + local.get $0 local.get $2 - i32.gt_s + i32.lt_s select - local.get $0 + local.get $56 i32.gt_s if - local.get $4 + local.get $1 i32.load offset=4 - local.get $0 + local.get $56 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $56 + local.get $1 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#findIndex108 + local.get $56 i32.const 1 i32.add - local.set $0 - br $for-loop|067 + local.set $56 + br $for-loop|0110 end end i32.const -1 - local.set $0 + local.set $56 end - local.get $0 + local.get $56 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21340,55 +21007,53 @@ 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.get $0 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex68 - loop $for-loop|069 - local.get $2 - local.get $4 + 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 $1 + local.tee $2 local.get $1 local.get $2 - i32.gt_s + i32.lt_s select - local.get $0 + local.get $55 i32.gt_s if - local.get $4 - i32.load offset=4 local.get $0 + i32.load offset=4 + local.get $55 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $55 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#findIndex112 + local.get $55 i32.const 1 i32.add - local.set $0 - br $for-loop|069 + local.set $55 + br $for-loop|0114 end end i32.const -1 - local.set $0 + local.set $55 end - local.get $0 + local.get $55 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21448,39 +21113,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|058 - 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|058 + 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 @@ -21498,39 +21163,39 @@ i32.load offset=12 i32.const 1 i32.sub - local.set $0 - block $__inlined_func$~lib/array/Array#findLastIndex59 - loop $for-loop|060 - 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#findLastIndex59 - 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|060 + 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 @@ -21550,39 +21215,39 @@ i32.load offset=12 i32.const 1 i32.sub - local.set $0 - block $__inlined_func$~lib/array/Array#findLastIndex61 - loop $for-loop|062 - 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#findLastIndex61 - 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|062 + 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 @@ -21602,39 +21267,39 @@ i32.load offset=12 i32.const 1 i32.sub - local.set $1 - block $__inlined_func$~lib/array/Array#findLastIndex63 - loop $for-loop|064 - 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#findLastIndex63 - 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|064 + 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 @@ -21647,57 +21312,55 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $5 - 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 $5 + 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 $4 - loop $for-loop|070 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0133 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $0 - local.get $4 - i32.gt_s + local.get $2 + i32.lt_s select - local.get $1 + local.get $54 i32.gt_s if - local.get $5 - 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 $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $2 + local.get $54 local.get $1 - local.get $5 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|070 + local.set $54 + br $for-loop|0133 end end i32.const 1 @@ -21711,57 +21374,55 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $5 - i32.store - local.get $0 - i32.const 6544 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#every71 (result i32) - i32.const 0 - local.set $1 - local.get $5 + 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 $4 - loop $for-loop|072 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0137 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $0 - local.get $4 - i32.gt_s + local.get $2 + i32.lt_s select - local.get $1 + local.get $53 i32.gt_s if - local.get $5 - 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 $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $2 + local.get $53 local.get $1 - local.get $5 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#every135 drop - local.get $1 + local.get $53 i32.const 1 i32.add - local.set $1 - br $for-loop|072 + local.set $53 + br $for-loop|0137 end end i32.const 1 @@ -21774,57 +21435,55 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $5 - i32.store - local.get $0 - i32.const 6576 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#every73 (result i32) - i32.const 0 - local.set $1 - local.get $5 + 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 $4 - loop $for-loop|074 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0141 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $0 - local.get $4 - i32.gt_s + local.get $2 + i32.lt_s select - local.get $1 + local.get $52 i32.gt_s if - local.get $5 - 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 $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $2 + local.get $52 local.get $1 - local.get $5 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#every139 drop - local.get $1 + local.get $52 i32.const 1 i32.add - local.set $1 - br $for-loop|074 + local.set $52 + br $for-loop|0141 end end i32.const 1 @@ -21854,57 +21513,55 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $5 - i32.store - local.get $0 - i32.const 6608 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#every75 (result i32) - i32.const 0 - local.set $1 - local.get $5 + 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 $4 - loop $for-loop|076 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0146 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $0 - local.get $4 - i32.gt_s + local.get $2 + i32.lt_s select - local.get $1 + local.get $51 i32.gt_s if - local.get $5 - 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 $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $2 + local.get $51 local.get $1 - local.get $5 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#every144 drop - local.get $1 + local.get $51 i32.const 1 i32.add - local.set $1 - br $for-loop|076 + local.set $51 + br $for-loop|0146 end end i32.const 1 @@ -21945,56 +21602,54 @@ local.get $0 call $~lib/array/Array#pop drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6640 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#every77 (result i32) - i32.const 0 - local.set $1 - local.get $5 + 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 $4 - loop $for-loop|078 - local.get $4 - local.get $5 - i32.load offset=12 - local.tee $0 + local.set $1 + loop $for-loop|0150 + local.get $1 local.get $0 - local.get $4 - i32.gt_s - select + i32.load offset=12 + local.tee $2 local.get $1 + local.get $2 + i32.lt_s + select + local.get $50 i32.gt_s if - local.get $5 + local.get $0 i32.load offset=4 - local.get $1 + local.get $50 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 + local.get $2 + local.get $50 local.get $0 - local.get $1 - local.get $5 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#every148 drop - local.get $1 + local.get $50 i32.const 1 i32.add - local.set $1 - br $for-loop|078 + local.set $50 + br $for-loop|0150 end end i32.const 1 @@ -22040,55 +21695,53 @@ i32.const 3 call $~lib/array/Array#push drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $5 - 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 - local.get $5 + 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 $4 - loop $for-loop|079 - local.get $4 - local.get $5 - i32.load offset=12 - local.tee $0 + local.set $1 + loop $for-loop|0154 + local.get $1 local.get $0 - local.get $4 - i32.gt_s - select + i32.load offset=12 + local.tee $2 local.get $1 + local.get $2 + i32.lt_s + select + local.get $49 i32.gt_s if - local.get $5 + local.get $0 i32.load offset=4 - local.get $1 + local.get $49 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 + local.get $2 + local.get $49 local.get $0 - local.get $1 - local.get $5 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|079 + local.set $49 + br $for-loop|0154 end end i32.const 0 @@ -22102,56 +21755,54 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $5 - i32.store - local.get $0 - i32.const 6704 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#some80 (result i32) - i32.const 0 - local.set $1 - local.get $5 + 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 $4 - loop $for-loop|081 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0158 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $0 - local.get $4 - i32.gt_s + local.get $2 + i32.lt_s select - local.get $1 + local.get $48 i32.gt_s if - local.get $5 - 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 $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $2 + local.get $48 local.get $1 - local.get $5 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#some156 drop - local.get $1 + local.get $48 i32.const 1 i32.add - local.set $1 - br $for-loop|081 + local.set $48 + br $for-loop|0158 end end i32.const 0 @@ -22164,56 +21815,54 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $5 - i32.store - local.get $0 - i32.const 6736 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#some82 (result i32) - i32.const 0 - local.set $1 - local.get $5 + 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 $4 - loop $for-loop|083 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0162 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $0 - local.get $4 - i32.gt_s + local.get $2 + i32.lt_s select - local.get $1 + local.get $47 i32.gt_s if - local.get $5 - 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 $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $2 + local.get $47 local.get $1 - local.get $5 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#some160 drop - local.get $1 + local.get $47 i32.const 1 i32.add - local.set $1 - br $for-loop|083 + local.set $47 + br $for-loop|0162 end end i32.const 0 @@ -22242,56 +21891,54 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $5 - i32.store - local.get $0 - i32.const 6768 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#some84 (result i32) - i32.const 0 - local.set $1 - local.get $5 + 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 $4 - loop $for-loop|085 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0167 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $0 - local.get $4 - i32.gt_s + local.get $2 + i32.lt_s select - local.get $1 + local.get $46 i32.gt_s if - local.get $5 - 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 $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $2 + local.get $46 local.get $1 - local.get $5 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#some165 drop - local.get $1 + local.get $46 i32.const 1 i32.add - local.set $1 - br $for-loop|085 + local.set $46 + br $for-loop|0167 end end i32.const 0 @@ -22333,55 +21980,53 @@ local.get $0 call $~lib/array/Array#pop drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6800 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#some86 (result i32) - i32.const 0 - local.set $1 - local.get $5 + 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 $4 - loop $for-loop|087 - local.get $4 - local.get $5 - i32.load offset=12 - local.tee $0 + local.set $1 + loop $for-loop|0171 + local.get $1 local.get $0 - local.get $4 - i32.gt_s - select + i32.load offset=12 + local.tee $2 local.get $1 + local.get $2 + i32.lt_s + select + local.get $45 i32.gt_s if - local.get $5 + local.get $0 i32.load offset=4 - local.get $1 + local.get $45 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 + local.get $2 + local.get $45 local.get $0 - local.get $1 - local.get $5 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#some169 drop - local.get $1 + local.get $45 i32.const 1 i32.add - local.set $1 - br $for-loop|087 + local.set $45 + br $for-loop|0171 end end i32.const 0 @@ -22430,47 +22075,45 @@ 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 - local.get $2 - local.get $4 - i32.load offset=12 - local.tee $0 + local.set $1 + loop $for-loop|0175 + local.get $1 local.get $0 + i32.load offset=12 + local.tee $2 + local.get $1 local.get $2 - i32.gt_s + i32.lt_s select - local.get $1 + local.get $44 i32.gt_s if - local.get $4 + 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 $4 + 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|06988 + local.set $44 + br $for-loop|0175 end end global.get $std/array/i @@ -22489,47 +22132,45 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 i32.store local.get $0 i32.const 6864 i32.store offset=8 - i32.const 0 - local.set $1 - local.get $4 + local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|071 - local.get $2 - local.get $4 + local.set $0 + loop $for-loop|0179 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $0 local.get $2 - i32.gt_s + i32.lt_s select - local.get $1 + local.get $43 i32.gt_s if - local.get $4 - 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 $4 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|071 + local.set $43 + br $for-loop|0179 end end global.get $std/array/i @@ -22564,47 +22205,45 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 i32.store local.get $0 i32.const 6896 i32.store offset=8 - i32.const 0 - local.set $1 - local.get $4 + local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|07489 - local.get $2 - local.get $4 + local.set $0 + loop $for-loop|0184 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $0 local.get $2 - i32.gt_s + i32.lt_s select - local.get $1 + local.get $42 i32.gt_s if - local.get $4 - 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 $4 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|07489 + local.set $42 + br $for-loop|0184 end end global.get $std/array/i @@ -22650,47 +22289,45 @@ 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 - local.get $2 - local.get $4 - i32.load offset=12 - local.tee $0 + local.set $1 + loop $for-loop|0188 + local.get $1 local.get $0 + i32.load offset=12 + local.tee $2 + local.get $1 local.get $2 - i32.gt_s + i32.lt_s select - local.get $1 + local.get $41 i32.gt_s if - local.get $4 + 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 $4 + 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|07690 + local.set $41 + br $for-loop|0188 end end global.get $std/array/i @@ -22738,47 +22375,45 @@ 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 - local.get $2 - local.get $4 - i32.load offset=12 - local.tee $0 + local.set $1 + loop $for-loop|0193 + local.get $1 local.get $0 + i32.load offset=12 + local.tee $2 + local.get $1 local.get $2 - i32.gt_s + i32.lt_s select - local.get $1 + local.get $40 i32.gt_s if - local.get $4 + 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 $4 + 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|07991 + local.set $40 + br $for-loop|0193 end end global.get $~lib/memory/__stack_pointer @@ -22798,23 +22433,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 @@ -22851,87 +22486,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 $3 + 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 $0 + local.tee $2 i32.const 0 i32.store - local.get $0 - local.get $3 + local.get $2 + local.get $1 i32.load offset=12 - local.tee $6 + local.tee $2 i32.const 2 i32.const 10 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 $4 - loop $for-loop|08193 - local.get $6 - local.get $3 + local.set $5 + loop $for-loop|0197 + local.get $2 + local.get $1 i32.load offset=12 - local.tee $0 - local.get $0 + local.tee $6 + local.get $2 local.get $6 - i32.gt_s + 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 $2 - local.get $3 + local.tee $6 + local.get $1 i32.load offset=4 i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength - local.get $2 - local.get $4 + local.get $5 + local.get $6 i32.add - local.get $0 + local.get $7 + local.get $39 local.get $1 - local.get $3 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|08193 + 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 $7 + local.get $3 i32.store offset=12 - local.get $7 + local.get $3 i32.load offset=12 i32.const 4 i32.ne @@ -22943,10 +22576,10 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $3 i32.const 0 call $~lib/array/Array#__get - local.set $11 + local.set $12 global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $0 @@ -22955,7 +22588,7 @@ i32.const 0 call $~lib/array/Array#__get f32.convert_i32_s - local.get $11 + local.get $12 f32.ne if i32.const 0 @@ -22968,14 +22601,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 +22641,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 +22773,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 +22814,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 +22922,52 @@ 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 7248 i32.store offset=8 - i32.const 0 - local.set $5 - i32.const 0 - local.set $1 - local.get $4 + local.get $0 i32.load offset=12 - local.set $2 - loop $for-loop|094 - local.get $2 - local.get $4 - i32.load offset=12 - local.tee $0 + local.set $1 + loop $for-loop|0206 + local.get $1 local.get $0 + i32.load offset=12 + local.tee $2 + local.get $1 local.get $2 - i32.gt_s + i32.lt_s select - local.get $1 + local.get $38 i32.gt_s if - local.get $4 + local.get $0 i32.load offset=4 - local.get $1 + local.get $38 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 + local.get $24 + local.get $2 + local.get $38 local.get $0 - local.get $1 - local.get $4 i32.const 7248 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $1 + local.set $24 + local.get $38 i32.const 1 i32.add - local.set $1 - br $for-loop|094 + local.set $38 + br $for-loop|0206 end end - local.get $5 + local.get $24 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -23354,56 +22983,54 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 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 + local.set $0 + local.get $1 i32.load offset=12 local.set $2 - loop $for-loop|096 + loop $for-loop|0210 local.get $2 - local.get $4 + local.get $1 i32.load offset=12 - local.tee $0 - local.get $0 + local.tee $3 local.get $2 - i32.gt_s + local.get $3 + i32.lt_s select - local.get $1 + local.get $37 i32.gt_s if - local.get $4 - 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 $0 + local.set $3 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $3 + local.get $37 local.get $1 - local.get $4 i32.const 7280 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $1 + local.set $0 + local.get $37 i32.const 1 i32.add - local.set $1 - br $for-loop|096 + local.set $37 + br $for-loop|0210 end end - local.get $5 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -23419,56 +23046,52 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 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 + local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|098 - local.get $2 - local.get $4 + local.set $0 + loop $for-loop|0214 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $0 local.get $2 - i32.gt_s + i32.lt_s select - local.get $1 + local.get $36 i32.gt_s if - local.get $4 - 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 $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 - local.get $0 + local.get $23 + local.get $2 + local.get $36 local.get $1 - local.get $4 i32.const 7312 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $1 + local.set $23 + local.get $36 i32.const 1 i32.add - local.set $1 - br $for-loop|098 + local.set $36 + br $for-loop|0214 end end - local.get $5 + local.get $23 i32.eqz if i32.const 0 @@ -23481,56 +23104,52 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 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 + local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|0100 - local.get $2 - local.get $4 + local.set $0 + loop $for-loop|0218 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $0 local.get $2 - i32.gt_s + i32.lt_s select - local.get $1 + local.get $35 i32.gt_s if - local.get $4 - 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 $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 - local.get $0 + local.get $22 + local.get $2 + local.get $35 local.get $1 - local.get $4 i32.const 7344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $1 + local.set $22 + local.get $35 i32.const 1 i32.add - local.set $1 - br $for-loop|0100 + local.set $35 + br $for-loop|0218 end end - local.get $5 + local.get $22 if i32.const 0 i32.const 1552 @@ -23542,56 +23161,52 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 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 + local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|0102 - local.get $2 - local.get $4 + local.set $0 + loop $for-loop|0222 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $0 local.get $2 - i32.gt_s + i32.lt_s select - local.get $1 + local.get $34 i32.gt_s if - local.get $4 - 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 $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 - local.get $0 + local.get $21 + local.get $2 + local.get $34 local.get $1 - local.get $4 i32.const 7376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $1 + local.set $21 + local.get $34 i32.const 1 i32.add - local.set $1 - br $for-loop|0102 + local.set $34 + br $for-loop|0222 end end - local.get $5 + local.get $21 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -23623,56 +23238,52 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 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 + local.get $1 i32.load offset=12 - local.set $2 - loop $for-loop|0104 - local.get $2 - local.get $4 + local.set $0 + loop $for-loop|0227 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $0 local.get $2 - i32.gt_s + i32.lt_s select - local.get $1 + local.get $33 i32.gt_s if - local.get $4 - 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 $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 - local.get $0 + local.get $20 + local.get $2 + local.get $33 local.get $1 - local.get $4 i32.const 7408 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $1 + local.set $20 + local.get $33 i32.const 1 i32.add - local.set $1 - br $for-loop|0104 + local.set $33 + br $for-loop|0227 end end - local.get $5 + local.get $20 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -23715,56 +23326,52 @@ 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 7440 i32.store offset=8 - i32.const 0 - local.set $5 - i32.const 0 - local.set $1 - local.get $4 + local.get $0 i32.load offset=12 - local.set $2 - loop $for-loop|0106 - local.get $2 - local.get $4 - i32.load offset=12 - local.tee $0 + local.set $1 + loop $for-loop|0231 + local.get $1 local.get $0 + i32.load offset=12 + local.tee $2 + local.get $1 local.get $2 - i32.gt_s + i32.lt_s select - local.get $1 + local.get $32 i32.gt_s if - local.get $4 + local.get $0 i32.load offset=4 - local.get $1 + local.get $32 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 + local.get $19 + local.get $2 + local.get $32 local.get $0 - local.get $1 - local.get $4 i32.const 7440 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $1 + local.set $19 + local.get $32 i32.const 1 i32.add - local.set $1 - br $for-loop|0106 + local.set $32 + br $for-loop|0231 end end - local.get $5 + local.get $19 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -23811,49 +23418,47 @@ 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 7472 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 + local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|090 - local.get $1 + local.set $2 + loop $for-loop|0235 + local.get $2 i32.const 0 i32.ge_s if - local.get $4 + local.get $0 i32.load offset=4 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $2 + local.get $18 local.get $1 - local.get $4 + 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|090 + 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 @@ -23869,49 +23474,49 @@ 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 $0 - local.get $4 + local.set $1 + local.get $3 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|092 - local.get $1 + local.set $2 + loop $for-loop|0239 + local.get $2 i32.const 0 i32.ge_s if - local.get $4 + local.get $3 i32.load offset=4 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $0 i32.const 4 global.set $~argumentsLength + local.get $1 local.get $0 local.get $2 - local.get $1 - local.get $4 + local.get $3 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|092 + 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 @@ -23927,49 +23532,47 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 i32.store local.get $0 i32.const 7536 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 + local.get $1 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|094107 - local.get $1 + local.set $2 + loop $for-loop|0243 + local.get $2 i32.const 0 i32.ge_s if - local.get $4 - 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 $2 + local.set $0 i32.const 4 global.set $~argumentsLength + local.get $17 local.get $0 local.get $2 local.get $1 - local.get $4 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|094107 + local.set $2 + br $for-loop|0243 end end - local.get $0 + local.get $17 i32.eqz if i32.const 0 @@ -23982,49 +23585,47 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 i32.store local.get $0 i32.const 7568 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 + local.get $1 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|096108 - local.get $1 + local.set $2 + loop $for-loop|0247 + local.get $2 i32.const 0 i32.ge_s if - local.get $4 - 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 $2 + local.set $0 i32.const 4 global.set $~argumentsLength + local.get $16 local.get $0 local.get $2 local.get $1 - local.get $4 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|096108 + local.set $2 + br $for-loop|0247 end end - local.get $0 + local.get $16 if i32.const 0 i32.const 1552 @@ -24036,49 +23637,47 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 i32.store local.get $0 i32.const 7600 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 + local.get $1 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|098109 - local.get $1 + local.set $2 + loop $for-loop|0251 + local.get $2 i32.const 0 i32.ge_s if - local.get $4 - 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 $2 + local.set $0 i32.const 4 global.set $~argumentsLength + local.get $15 local.get $0 local.get $2 local.get $1 - local.get $4 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|098109 + 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 @@ -24110,49 +23709,47 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $1 i32.store local.get $0 i32.const 7632 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 + local.get $1 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|0101 - local.get $1 + local.set $2 + loop $for-loop|0256 + local.get $2 i32.const 0 i32.ge_s if - local.get $4 - 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 $2 + local.set $0 i32.const 4 global.set $~argumentsLength + local.get $14 local.get $0 local.get $2 local.get $1 - local.get $4 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|0101 + 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 @@ -24195,49 +23792,47 @@ 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 7664 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 + local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|0103 - local.get $1 + local.set $2 + loop $for-loop|0260 + local.get $2 i32.const 0 i32.ge_s if - local.get $4 + local.get $0 i32.load offset=4 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $2 + local.get $13 local.get $1 - local.get $4 + 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|0103 + 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 @@ -24296,190 +23891,239 @@ 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 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 +24131,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 +24313,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 +24346,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,12 +24379,12 @@ i32.const 11 i32.const 8112 call $~lib/rt/__newArray - local.tee $5 + 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 @@ -24748,78 +24392,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 $1of18 - block $0of19 - block $outOfRange10 + block $1of139 + block $0of140 + block $outOfRange41 global.get $~argumentsLength - br_table $0of19 $1of18 $outOfRange10 + 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 $5 + local.get $0 i32.load offset=4 - local.get $5 - 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 $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 block $__inlined_func$std/array/isArraysEqual (result i32) + 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.set $0 - i32.const 0 - local.get $5 + local.get $0 i32.load offset=12 - local.tee $1 - local.get $4 + 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 $4 - local.get $5 + local.get $0 + local.get $1 i32.eq br_if $__inlined_func$std/array/isArraysEqual drop - loop $for-loop|038 - local.get $0 - local.get $1 - i32.lt_s + loop $for-loop|029 + local.get $2 + local.get $62 + i32.gt_s if - local.get $5 local.get $0 + local.get $62 call $~lib/array/Array#__get - local.tee $9 - local.get $9 + local.tee $10 + local.get $10 f64.ne if (result i32) - local.get $4 - local.get $0 + local.get $1 + local.get $62 call $~lib/array/Array#__get - local.tee $9 - local.get $9 + local.tee $10 + local.get $10 f64.ne else i32.const 0 @@ -24827,21 +24469,21 @@ i32.eqz if i32.const 0 - local.get $5 local.get $0 + local.get $62 call $~lib/array/Array#__get - local.get $4 - 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|038 + local.set $62 + br $for-loop|029 end end i32.const 1 @@ -24861,12 +24503,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 @@ -24874,29 +24516,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 $1of1151 - block $0of1152 - block $outOfRange153 + block $1of1309 + block $0of1310 + block $outOfRange311 global.get $~argumentsLength - br_table $0of1152 $1of1151 $outOfRange153 + 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 @@ -24907,12 +24549,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 @@ -24930,11 +24572,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 +24585,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 +24607,7 @@ i32.const 3 i32.const 8592 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=124 global.get $~lib/memory/__stack_pointer i32.const 1 @@ -24973,7 +24615,7 @@ i32.const 3 i32.const 8624 call $~lib/rt/__newArray - local.tee $8 + local.tee $1 i32.store offset=128 global.get $~lib/memory/__stack_pointer i32.const 2 @@ -24981,7 +24623,7 @@ i32.const 3 i32.const 8656 call $~lib/rt/__newArray - local.tee $3 + local.tee $2 i32.store offset=132 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24989,7 +24631,7 @@ i32.const 3 i32.const 8688 call $~lib/rt/__newArray - local.tee $7 + local.tee $3 i32.store offset=136 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24997,7 +24639,7 @@ 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 @@ -25007,38 +24649,38 @@ global.get $~lib/memory/__stack_pointer i32.const 128 call $std/array/createReverseOrderedArray - local.tee $5 + local.tee $7 i32.store offset=148 global.get $~lib/memory/__stack_pointer i32.const 1024 call $std/array/createReverseOrderedArray - local.tee $4 + local.tee $8 i32.store offset=152 global.get $~lib/memory/__stack_pointer i32.const 10000 call $std/array/createReverseOrderedArray - local.tee $2 + local.tee $9 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 $0 call $std/array/assertSortedDefault - local.get $8 + 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 $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 - local.get $8 local.get $1 + local.get $0 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25050,19 +24692,19 @@ call $~lib/builtins/abort unreachable end - local.get $3 + 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 $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 - local.get $3 - local.get $1 + local.get $2 + local.get $0 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25074,10 +24716,10 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $3 call $std/array/assertSortedDefault - local.get $7 - local.get $10 + local.get $3 + local.get $5 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25092,7 +24734,7 @@ local.get $6 call $std/array/assertSortedDefault local.get $6 - local.get $10 + local.get $5 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -25104,10 +24746,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 call $std/array/assertSortedDefault + local.get $7 local.get $5 - local.get $10 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -25119,10 +24761,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $8 call $std/array/assertSortedDefault - local.get $4 - local.get $10 + local.get $8 + local.get $5 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -25134,10 +24776,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $9 call $std/array/assertSortedDefault - local.get $2 - local.get $10 + local.get $9 + local.get $5 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -25149,240 +24791,247 @@ 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 + 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 $3 local.get $3 + i32.const 0 + i32.gt_s + select + local.set $5 local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $8 - i32.const 4 + local.get $3 + local.get $5 + i32.sub + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.tee $3 + 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 $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.set $2 + local.get $3 + i32.const 2 + i32.shl + local.set $3 + loop $while-continue|00 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 $64 + i32.gt_u + if local.get $0 - i32.load offset=4 - i32.ne + 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 - i32.const 0 - local.set $8 - br $for-break0 + 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 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|013 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 - end - local.get $8 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1042 - i32.const 3 + 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 24 - i32.add - global.set $~lib/memory/__stack_pointer - 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 @@ -25390,120 +25039,115 @@ 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 $4 + local.tee $1 i64.const 0 i64.store - local.get $4 + 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 $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 16 i32.const 26 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 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - 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 global.get $~lib/memory/__stack_pointer i32.const 32 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 32 - call $~lib/memory/memory.fill - local.get $5 - local.get $0 + local.get $2 + local.get $3 i32.store - local.get $5 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $5 - local.get $0 + 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 $5 + local.get $2 i32.const 32 i32.store offset=8 - local.get $5 + 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 $4 - local.get $5 - i32.store - loop $for-loop|0154 - local.get $1 + local.get $1 + local.get $2 + i32.store + loop $for-loop|0313 + local.get $31 i32.const 2 i32.lt_s if global.get $~lib/memory/__stack_pointer i32.const 1 call $~lib/array/Array#constructor - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.const 1 - local.get $1 + local.get $31 i32.sub call $~lib/array/Array#__set - local.get $5 + local.get $2 + local.get $31 local.get $1 - local.get $0 call $~lib/array/Array<~lib/array/Array>#__set - local.get $1 + local.get $31 i32.const 1 i32.add - local.set $1 - br $for-loop|0154 + local.set $31 + br $for-loop|0313 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 9040 i32.store offset=8 - local.get $5 + local.get $2 i32.const 9040 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $5 + local.set $61 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -25511,7 +25155,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 @@ -25523,57 +25167,52 @@ 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 $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 16 i32.const 29 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 - 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 $0 + 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 $4 + local.tee $3 i32.store offset=4 - local.get $4 - i32.const 0 - i32.const 2048 - call $~lib/memory/memory.fill - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.store - local.get $0 - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $4 + 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 $0 + local.get $2 i32.const 2048 i32.store offset=8 - local.get $0 + local.get $2 i32.const 512 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -25581,10 +25220,10 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $0 + local.get $2 i32.store - loop $for-loop|015 - local.get $5 + loop $for-loop|039 + local.get $61 i32.const 512 i32.lt_s if @@ -25595,7 +25234,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 @@ -25608,7 +25247,7 @@ i32.store local.get $1 i32.const 511 - local.get $5 + local.get $61 i32.sub i32.store global.get $~lib/memory/__stack_pointer @@ -25618,27 +25257,27 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - local.get $0 - local.get $5 + local.get $2 + local.get $61 local.get $1 call $~lib/array/Array<~lib/array/Array>#__set - local.get $5 + local.get $61 i32.const 1 i32.add - local.set $5 - br $for-loop|015 + 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 $0 + local.get $2 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 9072 i32.store offset=8 - local.get $0 + local.get $2 i32.const 9072 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -25655,12 +25294,12 @@ i32.const 31 i32.const 9312 call $~lib/rt/__newArray - local.tee $6 + local.tee $2 i32.store offset=152 i32.const 1 global.set $~argumentsLength i32.const 0 - local.set $5 + local.set $62 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -25668,22 +25307,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 $1of117 - block $0of118 - block $outOfRange19 + block $1of145 + block $0of146 + block $outOfRange47 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of118 $1of117 $outOfRange19 + br_table $0of146 $1of145 $outOfRange47 end unreachable end i32.const 9360 - local.set $5 + local.set $62 global.get $~lib/memory/__stack_pointer i32.const 9360 i32.store @@ -25695,63 +25334,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 $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $5 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) - local.get $1 + 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 $7 + local.set $1 local.get $0 i32.load offset=12 - local.set $1 - loop $for-loop|020 + local.set $3 + loop $for-loop|048 local.get $1 - local.get $7 - i32.gt_s + local.get $3 + i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.sub 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 local.get $0 - local.get $7 + local.get $1 call $~lib/array/Array#__get - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=4 i32.const 2 global.set $~argumentsLength - local.get $4 - local.get $2 local.get $5 + local.get $6 + local.get $62 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 @@ -25764,11 +25402,11 @@ i32.const 0 br $__inlined_func$std/array/isSorted<~lib/string/String|null> end - local.get $7 + local.get $1 i32.const 1 i32.add - local.set $7 - br $for-loop|020 + local.set $1 + br $for-loop|048 end end global.get $~lib/memory/__stack_pointer @@ -25795,8 +25433,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 $3 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -25804,56 +25440,17 @@ 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 - block $folding-inner1 - block $folding-inner021 - local.get $0 - i32.load offset=12 - local.tee $1 - local.get $6 - i32.load offset=12 - i32.ne - br_if $folding-inner021 - local.get $0 - local.get $6 - i32.eq - br_if $folding-inner1 - loop $for-loop|049 - local.get $1 - local.get $3 - i32.gt_s - if - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $6 - local.get $3 - call $~lib/array/Array#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $4 - local.get $2 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner021 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|049 - end - end - br $folding-inner1 - end + 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 @@ -25861,6 +25458,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 $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + 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 $3 + 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 @@ -25877,17 +25523,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - local.set $3 - local.get $0 + local.tee $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-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -25896,10 +25539,10 @@ i32.const 0 i32.const 400 call $~lib/array/Array<~lib/string/String>#constructor - local.tee $2 + local.tee $5 i32.store - loop $for-loop|0155 - local.get $3 + loop $for-loop|049 + local.get $25 i32.const 400 i32.lt_s if @@ -25907,9 +25550,9 @@ f64.const 32 f64.mul i32.trunc_f64_s - local.set $5 + local.set $6 i32.const 0 - local.set $8 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -25917,7 +25560,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 @@ -25930,15 +25573,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|023 + local.get $2 + local.get $6 + i32.lt_s if - local.get $0 - local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $7 i32.const 7696 i32.store offset=4 call $~lib/math/NativeMath.random @@ -25953,7 +25594,7 @@ f64.mul f64.floor i32.trunc_f64_s - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -25961,7 +25602,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 @@ -25970,7 +25613,7 @@ i32.load i32.const 1 i32.shr_u - local.get $7 + local.get $8 i32.le_u if global.get $~lib/memory/__stack_pointer @@ -25988,7 +25631,7 @@ local.tee $0 i32.store local.get $0 - local.get $7 + local.get $8 i32.const 1 i32.shl i32.const 7696 @@ -26003,17 +25646,17 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $4 + local.get $7 local.get $1 local.get $0 call $~lib/string/String.__concat local.tee $0 i32.store - local.get $8 + local.get $2 i32.const 1 i32.add - local.set $8 - br $for-loop|00 + local.set $2 + br $for-loop|023 end end global.get $~lib/memory/__stack_pointer @@ -26023,28 +25666,28 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 - local.get $3 + local.get $5 + local.get $25 local.get $0 call $~lib/array/Array<~lib/array/Array>#__set - local.get $3 + local.get $25 i32.const 1 i32.add - local.set $3 - br $for-loop|0155 + 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 $2 - local.tee $0 + local.get $3 + 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 @@ -26052,28 +25695,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 $1of1156 - block $0of1157 - block $outOfRange158 + block $1of152 + block $0of153 + block $outOfRange54 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of1157 $1of1156 $outOfRange158 + 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 $5 local.get $0 - local.get $1 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 4 @@ -26084,32 +25727,31 @@ i32.const 35 i32.const 9424 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 + local.get $1 i32.store offset=164 - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 9520 i32.store offset=168 - local.get $0 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=12 - local.set $1 i32.const 0 local.set $0 i32.const 0 - local.set $8 - local.get $2 + local.set $61 + local.get $1 + i32.load offset=4 + local.set $3 + 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 @@ -26117,7 +25759,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $3 + local.tee $1 i32.const 0 i32.lt_s if @@ -26126,63 +25768,82 @@ 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-inner01 + local.get $1 + i32.eqz + if + i32.const 9456 + i32.const 9488 local.get $3 - i32.eqz + 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 $3 + 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 $7 - i32.load8_u select - local.set $1 - br $folding-inner01 - 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 5 - i32.add - i32.mul - i32.const 5 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|13 - local.get $3 local.get $8 - i32.gt_s + 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 $7 - local.get $8 - i32.add - i32.load8_u - local.tee $2 - i32.eqz - i32.const 4 - i32.add - local.set $5 local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add - i32.const 9456 - i32.const 9488 local.get $2 - select + i32.add + i32.const 9520 local.get $5 i32.const 1 i32.shl @@ -26191,65 +25852,47 @@ local.get $5 i32.add local.set $0 - local.get $6 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9520 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $6 - i32.add - local.set $0 - end - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|13 end + local.get $61 + i32.const 1 + i32.add + local.set $61 + br $for-loop|149 end - local.get $3 - local.get $7 - i32.add - i32.load8_u - local.tee $2 - i32.eqz - i32.const 4 - i32.add - local.set $5 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9456 - i32.const 9488 + end + local.get $1 + local.get $3 + i32.add + i32.load8_u + local.tee $1 + i32.eqz + i32.const 4 + i32.add + local.set $3 + 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 $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $6 + local.get $0 + local.get $3 + i32.add + local.tee $0 + i32.gt_s + if local.get $2 - select - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $4 local.get $0 - local.get $5 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner01 - end + call $~lib/string/String#substring + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -26263,12 +25906,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 @@ -26285,15 +25928,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 +25963,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 +25998,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 +26033,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,19 +26067,22 @@ 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.const 9232 - i32.store offset=168 + i32.store offset=164 local.get $1 i32.const 9232 - call $~lib/array/Array<~lib/string/String|null>#join - local.set $0 - global.get $~lib/memory/__stack_pointer + i32.store offset=168 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + i32.const 9232 + call $~lib/util/string/joinStringArray + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -26564,7 +26210,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 +26218,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 +26234,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 +26257,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 +26281,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 +26301,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 @@ -26694,7 +26340,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 @@ -26702,16 +26348,16 @@ local.get $2 i32.const 9520 i32.store + i32.const 0 + local.set $0 + i32.const 0 + local.set $62 local.get $1 i32.load offset=4 - local.set $5 + local.set $3 local.get $1 i32.load offset=12 local.set $1 - i32.const 0 - local.set $0 - i32.const 0 - local.set $8 local.get $2 i32.const 4 i32.sub @@ -26719,7 +26365,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 i32.const 0 i32.store @@ -26727,7 +26373,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $1 i32.const 0 i32.lt_s if @@ -26736,102 +26382,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-inner04 - local.get $6 - i32.eqz - if - local.get $5 - i32.load8_s - call $~lib/util/number/itoa32 - local.set $1 - br $folding-inner04 - end + local.get $1 + i32.eqz + if + local.get $3 + i32.load8_s + call $~lib/util/number/itoa32 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 11 - i32.add - i32.mul - i32.const 11 + i32.const 4 i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|06 - local.get $6 - local.get $8 - i32.gt_s + 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 $3 + local.get $62 + i32.add + i32.load8_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 + i32.const 9520 local.get $5 - local.get $8 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered + i32.const 1 + i32.shl + call $~lib/memory/memory.copy local.get $0 + local.get $5 i32.add local.set $0 - local.get $4 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9520 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.set $0 - end - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|06 end + local.get $62 + i32.const 1 + i32.add + local.set $62 + br $for-loop|050 end + end + local.get $6 + local.get $0 + i32.const 1 + i32.shl + local.get $2 + i32.add + local.get $1 + local.get $3 + 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 $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $5 - local.get $6 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner04 - end + call $~lib/string/String#substring + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -26848,13 +26495,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 @@ -26883,7 +26529,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 @@ -26891,16 +26537,16 @@ local.get $2 i32.const 9520 i32.store + i32.const 0 + local.set $0 + i32.const 0 + local.set $62 local.get $1 i32.load offset=4 - local.set $5 + local.set $3 local.get $1 i32.load offset=12 local.set $1 - i32.const 0 - local.set $0 - i32.const 0 - local.set $8 local.get $2 i32.const 4 i32.sub @@ -26908,7 +26554,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 i32.const 0 i32.store @@ -26916,7 +26562,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $1 i32.const 0 i32.lt_s if @@ -26925,106 +26571,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-inner07 - local.get $6 - i32.eqz - if - local.get $5 - i32.load16_u - call $~lib/util/number/utoa32 - local.set $1 - br $folding-inner07 - end + local.get $1 + i32.eqz + if + local.get $3 + i32.load16_u + call $~lib/util/number/utoa32 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - i32.mul - i32.const 10 + i32.const 4 i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|09124 - local.get $6 - local.get $8 - i32.gt_s + 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 $3 + i32.add + i32.load16_u + 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 $8 + i32.const 9520 + local.get $5 i32.const 1 i32.shl - local.get $5 - 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 $4 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9520 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.set $0 - end - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|09124 end + local.get $62 + i32.const 1 + i32.add + local.set $62 + br $for-loop|051 end + 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 $3 + 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 local.get $0 - i32.const 1 - i32.shl - local.get $1 - 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 $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-inner07 - end + call $~lib/string/String#substring + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -27041,13 +26688,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 @@ -27064,27 +26710,27 @@ 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 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 9520 i32.store - local.get $1 + local.get $0 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -27114,27 +26760,27 @@ 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 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 9520 i32.store - local.get $1 + local.get $0 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -27257,7 +26903,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 @@ -27265,13 +26911,13 @@ local.get $0 i32.const 9520 i32.store + i32.const 0 + local.set $62 local.get $1 i32.load offset=4 - local.set $7 + local.set $3 local.get $1 i32.load offset=12 - local.set $2 - i32.const 0 local.set $1 local.get $0 i32.const 12 @@ -27280,7 +26926,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 @@ -27289,10 +26935,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 $0 i32.const 0 i32.lt_s if @@ -27301,14 +26947,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 $6 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $3 i32.load local.tee $0 i32.store @@ -27319,7 +26965,7 @@ else i32.const 9232 end - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -27327,7 +26973,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 @@ -27335,17 +26981,17 @@ i32.load i32.const 1 i32.shr_u - local.set $4 - loop $for-loop|011 - local.get $1 - local.get $6 - i32.lt_s + 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 $1 + local.get $62 i32.const 2 i32.shl - local.get $7 + local.get $3 i32.add i32.load local.tee $5 @@ -27359,50 +27005,50 @@ global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=8 - local.get $0 + local.get $2 local.get $5 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end - local.get $4 + 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 $1 + local.get $62 i32.const 1 i32.add - local.set $1 - br $for-loop|011 + local.set $62 + br $for-loop|052 end end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $3 i32.add i32.load - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 call $~lib/array/Array#toString - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 local.get $0 + i32.store offset=8 local.get $2 + local.get $0 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end global.get $~lib/memory/__stack_pointer @@ -27415,13 +27061,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 @@ -27472,7 +27117,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 @@ -27480,13 +27125,13 @@ local.get $0 i32.const 9520 i32.store + i32.const 0 + local.set $62 local.get $1 i32.load offset=4 - local.set $7 + local.set $3 local.get $1 i32.load offset=12 - local.set $2 - i32.const 0 local.set $1 local.get $0 i32.const 12 @@ -27495,7 +27140,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 @@ -27504,10 +27149,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 $0 i32.const 0 i32.lt_s if @@ -27516,14 +27161,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 $6 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $3 i32.load local.tee $0 i32.store @@ -27534,7 +27179,7 @@ else i32.const 9232 end - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -27542,7 +27187,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 @@ -27550,17 +27195,17 @@ i32.load i32.const 1 i32.shr_u - local.set $4 - loop $for-loop|01322 - local.get $1 - local.get $6 - i32.lt_s + 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 $1 + local.get $62 i32.const 2 i32.shl - local.get $7 + local.get $3 i32.add i32.load local.tee $5 @@ -27574,50 +27219,50 @@ global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=8 - local.get $0 + local.get $2 local.get $5 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end - local.get $4 + 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 $1 + local.get $62 i32.const 1 i32.add - local.set $1 - br $for-loop|01322 + local.set $62 + br $for-loop|053 end end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $3 i32.add i32.load - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 call $~lib/array/Array#toString - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 local.get $0 + i32.store offset=8 local.get $2 + local.get $0 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end global.get $~lib/memory/__stack_pointer @@ -27630,13 +27275,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 @@ -27655,10 +27299,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 +27311,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 +27325,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 @@ -27695,7 +27339,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 @@ -27703,13 +27347,13 @@ local.get $0 i32.const 9520 i32.store - local.get $2 + i32.const 0 + local.set $62 + local.get $1 i32.load offset=4 - local.set $7 - local.get $2 + local.set $3 + local.get $1 i32.load offset=12 - local.set $2 - i32.const 0 local.set $1 local.get $0 i32.const 12 @@ -27718,7 +27362,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 @@ -27727,10 +27371,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 $0 i32.const 0 i32.lt_s if @@ -27739,14 +27383,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 $6 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $3 i32.load local.tee $0 i32.store @@ -27757,7 +27401,7 @@ else i32.const 9232 end - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -27765,7 +27409,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 @@ -27773,17 +27417,17 @@ i32.load i32.const 1 i32.shr_u - local.set $4 - loop $for-loop|01523 - local.get $1 - local.get $6 - i32.lt_s + 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 $1 + local.get $62 i32.const 2 i32.shl - local.get $7 + local.get $3 i32.add i32.load local.tee $5 @@ -27797,50 +27441,50 @@ global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=8 - local.get $0 + local.get $2 local.get $5 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end - local.get $4 + 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 $1 + local.get $62 i32.const 1 i32.add - local.set $1 - br $for-loop|01523 + local.set $62 + br $for-loop|054 end end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $3 i32.add i32.load - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 call $~lib/array/Array<~lib/array/Array>#toString - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 local.get $0 + i32.store offset=8 local.get $2 + local.get $0 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end global.get $~lib/memory/__stack_pointer @@ -27853,13 +27497,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 @@ -27922,9 +27565,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 @@ -27937,16 +27580,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 @@ -27956,10 +27599,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 @@ -27970,13 +27613,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 +27627,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 +27635,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 +27643,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 +27652,9 @@ 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 - i32.const 0 - local.set $8 - i32.const 0 - local.set $3 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -28025,142 +27662,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 $2 + local.get $1 i32.load offset=4 - local.set $6 - local.get $2 + local.set $2 + local.get $1 i32.load offset=12 - local.set $5 - loop $for-loop|0133 + local.set $1 + loop $for-loop|0317 local.get $1 - local.get $5 - i32.lt_s + local.get $60 + i32.gt_s if - local.get $1 + local.get $60 i32.const 2 i32.shl - local.get $6 + local.get $2 i32.add i32.load - local.tee $0 + local.tee $3 if (result i32) - local.get $0 + local.get $3 i32.load offset=12 else i32.const 0 end - local.get $8 + local.get $29 i32.add - local.set $8 - local.get $1 + local.set $29 + local.get $60 i32.const 1 i32.add - local.set $1 - br $for-loop|0133 + local.set $60 + br $for-loop|0317 end end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $29 i32.const 2 i32.shl - local.tee $1 + local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16 i32.const 31 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $6 i32.store offset=4 - local.get $0 - local.get $8 + local.get $6 + local.get $29 i32.store offset=12 - local.get $0 - local.get $1 + local.get $6 + local.get $3 i32.store offset=8 - local.get $0 - local.get $7 + local.get $6 + local.get $5 i32.store offset=4 - local.get $0 - local.get $7 + local.get $6 + local.get $5 i32.store - local.get $0 - local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $6 + local.get $5 + 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 $60 + loop $for-loop|1320 local.get $1 - local.get $5 - i32.lt_s + local.get $60 + i32.gt_s if - local.get $1 + local.get $60 i32.const 2 i32.shl - local.get $6 + local.get $2 i32.add i32.load - local.tee $2 + local.tee $3 if - local.get $3 - local.get $7 + local.get $4 + local.get $5 i32.add - local.get $2 + local.get $3 i32.load offset=4 - local.get $2 + local.get $3 i32.load offset=12 i32.const 2 i32.shl - local.tee $2 + local.tee $3 call $~lib/memory/memory.copy - local.get $2 local.get $3 + local.get $4 i32.add - local.set $3 + local.set $4 end - local.get $1 + local.get $60 i32.const 1 i32.add - local.set $1 - br $for-loop|1134 + local.set $60 + br $for-loop|1320 end end i32.const 0 - local.set $1 - loop $for-loop|2135 - local.get $1 - local.get $8 - i32.lt_s + local.set $60 + loop $for-loop|2323 + local.get $29 + local.get $60 + i32.gt_s if - local.get $7 - local.get $1 + local.get $60 i32.const 2 i32.shl - local.get $7 + local.get $5 i32.add i32.load - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 + local.tee $1 + if + local.get $5 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $60 i32.const 1 i32.add - local.set $1 - br $for-loop|2135 + 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 $0 - local.tee $1 + local.get $6 i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -28168,9 +27811,9 @@ i32.const 31 i32.const 14928 call $~lib/rt/__newArray - local.tee $5 + local.tee $0 i32.store offset=148 - local.get $0 + local.get $6 i32.load offset=12 i32.const 8 i32.ne @@ -28183,29 +27826,29 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 loop $for-loop|8 - local.get $5 - i32.load offset=12 local.get $0 + i32.load offset=12 + local.get $2 i32.gt_s if - local.get $1 - local.get $0 + local.get $6 + local.get $2 call $~lib/array/Array#__get - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store - local.get $5 local.get $0 + local.get $2 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 $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -28216,10 +27859,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 @@ -28278,13 +27921,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 +27935,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 +27944,12 @@ 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 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -28316,18 +27957,18 @@ 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 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 @@ -28336,56 +27977,59 @@ i32.store local.get $3 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 $4 + loop $for-loop|065 + local.get $2 local.get $1 - local.get $7 - i32.gt_s + i32.load offset=12 + local.tee $5 + local.get $2 + local.get $5 + i32.lt_s select - local.get $0 + local.get $28 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $0 + local.tee $5 + local.get $28 i32.const 2 i32.shl - local.tee $2 - local.get $8 + local.tee $6 + local.get $1 i32.load offset=4 i32.add i32.load - local.tee $1 + local.tee $7 i32.store offset=4 i32.const 3 global.set $~argumentsLength - local.get $4 + local.get $5 + local.get $7 + local.get $28 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 $5 i32.store offset=8 - local.get $2 - local.get $5 + local.get $4 + local.get $6 i32.add - local.get $1 + local.get $5 i32.store - local.get $3 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 + local.get $5 + if + local.get $3 + local.get $5 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $28 i32.const 1 i32.add - local.set $0 - br $for-loop|0163 + local.set $28 + br $for-loop|065 end end global.get $~lib/memory/__stack_pointer @@ -28475,12 +28119,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|0165 + loop $while-continue|0330 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|0165 + br $while-continue|0330 end end end @@ -28644,10 +28288,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 @@ -28661,7 +28301,7 @@ if i32.const 1056 i32.const 1104 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -28675,27 +28315,26 @@ 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 - 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 +28384,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,43 +28400,44 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store local.get $0 local.get $1 i32.shl - local.tee $4 - local.set $6 - local.get $4 + local.tee $1 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 $4 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.get $5 i32.store + local.get $5 + if + local.get $2 + local.get $5 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $2 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $1 + local.get $5 i32.store offset=4 local.get $2 - local.get $4 + local.get $1 i32.store offset=8 local.get $2 local.get $0 @@ -28869,41 +28508,41 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $0 + i32.load offset=12 + local.tee $2 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select local.tee $3 - local.get $0 - i32.load offset=12 - local.tee $4 i32.add - local.tee $2 + local.tee $4 i32.const 268435455 i32.gt_u if i32.const 1056 i32.const 1104 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort 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 $2 i32.const 2 i32.shl local.tee $0 @@ -28921,7 +28560,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,94 +28637,6 @@ i32.const 0 i32.gt_s select - local.tee $3 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store - local.get $2 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - 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 - i32.const 0 - i32.store - local.get $3 - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.tee $1 - i32.sub - local.tee $3 - local.get $2 - local.get $3 - i32.lt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select local.tee $2 i32.const 2 i32.const 3 @@ -29097,49 +28648,21 @@ i32.load offset=4 local.get $0 i32.load offset=4 - local.tee $5 local.get $1 i32.const 2 i32.shl i32.add - local.tee $6 local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $4 - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $1 - i32.const 2 - i32.shl - local.get $5 - i32.add - 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 - 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 ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -29160,11 +28683,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store + local.get $3 local.get $2 - i32.const 2 local.get $0 i32.load offset=12 local.tee $3 @@ -29189,55 +28712,55 @@ i32.lt_s select end - local.tee $1 + local.tee $4 i32.sub - local.tee $2 + local.tee $1 + local.get $1 local.get $2 - 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 $1 i32.const 2 - i32.const 8 + i32.const 3 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $2 i32.store - local.get $4 + local.get $2 i32.load offset=4 local.get $0 i32.load offset=4 local.tee $5 - local.get $1 + 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 $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 i32.add local.get $3 - local.get $1 + local.get $4 i32.sub i32.const 2 i32.shl @@ -29245,14 +28768,130 @@ end local.get $0 local.get $3 - local.get $2 + 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 $2 + ) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + i32.const 0 + i32.store + local.get $2 + i32.const 2 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select + end + local.tee $5 + i32.sub + local.tee $1 + local.get $1 + i32.const 2 + i32.gt_s + select + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $3 + i32.const 2 + i32.const 8 + i32.const 0 + call $~lib/rt/__newArray + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $2 + local.get $3 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy local.get $4 + local.get $3 + local.get $5 + i32.add + local.tee $5 + i32.ne + if + local.get $2 + local.get $5 + i32.const 2 + i32.shl + 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 + 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 $6 ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -29280,7 +28919,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -29300,7 +28939,7 @@ if i32.const 5952 i32.const 1104 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -29338,7 +28977,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -29382,13 +29021,13 @@ 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 $3 i32.const 2 i32.const 3 i32.const 0 @@ -29399,18 +29038,18 @@ i32.load offset=4 local.set $4 loop $for-loop|0 - local.get $2 + local.get $3 local.get $0 i32.load offset=12 local.tee $5 - local.get $2 + local.get $3 local.get $5 i32.lt_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 @@ -29425,16 +29064,16 @@ 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 +29103,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 +29162,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 +29312,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 +29344,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 +29365,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 +29397,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 +29435,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 @@ -29813,7 +29448,7 @@ if i32.const 1056 i32.const 1104 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -29832,17 +29467,16 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store offset=4 - local.get $2 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill local.get $0 local.get $2 i32.store - local.get $0 local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + 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 @@ -29881,48 +29515,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 - 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 $3 - local.get $4 + local.tee $4 + local.get $3 i32.sub - local.tee $1 + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -29933,12 +29563,12 @@ return end i32.const 0 - local.get $2 + local.get $1 i32.const 1 i32.shl - local.get $3 - i32.eq local.get $4 + i32.eq + local.get $3 select if global.get $~lib/memory/__stack_pointer @@ -29949,22 +29579,22 @@ return end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 local.get $0 - local.get $4 + local.get $3 i32.add - local.get $1 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) @@ -30006,71 +29636,70 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select - local.tee $2 local.tee $0 + select + local.tee $3 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $3 i32.const 100000000 i32.ge_u i32.add end end - local.get $1 + 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 $0 + local.tee $2 i32.store - local.get $0 local.get $2 local.get $3 - call $~lib/util/number/utoa32_dec_lut local.get $1 + call $~lib/util/number/utoa32_dec_lut + local.get $0 if - local.get $0 + local.get $2 i32.const 45 i32.store16 end @@ -30078,7 +29707,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $2 ) (func $~lib/util/number/utoa32 (param $0 i32) (result i32) (local $1 i32) @@ -30113,68 +29742,275 @@ 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 $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) @@ -30203,19 +30039,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 +30078,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 +30093,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 @@ -30342,29 +30181,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-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -30374,117 +30191,140 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 44 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - 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-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 i32.store - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 65 - i32.const 60 - call $~lib/builtins/abort - unreachable + 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 $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 70 + 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 $2 + i32.store offset=4 + 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 $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 $3 + 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 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 $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $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 @@ -30580,7 +30420,83 @@ local.get $3 local.get $1 i32.store offset=4 - block $__inlined_func$~lib/array/Array#every (result i32) + block $__inlined_func$~lib/array/Array#every (result i32) + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.get $2 + i32.gt_s + if + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $4 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $4 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $__inlined_func$~lib/array/Array#every + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/array/Array#findIndex (result i32) local.get $0 i32.load offset=12 local.set $3 @@ -30588,86 +30504,10 @@ local.get $3 local.get $0 i32.load offset=12 - local.tee $2 - local.get $2 - local.get $3 - i32.gt_s - select - local.get $4 - i32.gt_s - if - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $2 - local.get $4 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $__inlined_func$~lib/array/Array#every - drop - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - i32.const 1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 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 - local.get $0 - i32.store - 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 - loop $for-loop|0 - local.get $4 - 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 +30519,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 +30539,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 +30570,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 +30588,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 +30608,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) @@ -30806,7 +30650,7 @@ if i32.const 1344 i32.const 1104 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -30862,21 +30706,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 +30728,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 +30739,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 +30780,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 +30815,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 +30825,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 +30850,7 @@ local.get $3 i32.lt_s if + local.get $2 local.get $1 local.get $2 i32.const 2 @@ -31019,6 +30860,7 @@ i32.load i32.eq br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 1 i32.add @@ -31027,13 +30869,11 @@ end end i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 i32.const 0 i32.ge_s ) @@ -31070,7 +30910,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 +30920,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 +30945,7 @@ local.get $3 i32.lt_s if + local.get $2 local.get $1 local.get $2 i32.const 2 @@ -31116,6 +30955,7 @@ i32.load i32.eq br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 1 i32.add @@ -31124,17 +30964,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 +31004,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 +31036,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 +31046,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 +31055,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 @@ -31284,36 +31120,36 @@ 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 i32.const 1056 i32.const 1104 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort 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 $3 i32.store - local.get $2 + local.get $3 i32.load offset=4 local.tee $5 local.get $0 @@ -31328,7 +31164,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 @@ -31340,7 +31176,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return end i32.const 32064 @@ -31416,12 +31252,12 @@ 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 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -31464,45 +31300,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 @@ -31526,13 +31362,13 @@ 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 +31377,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 $3 i32.store local.get $0 i32.load offset=12 - local.set $5 + local.set $4 loop $for-loop|0 - local.get $5 + local.get $4 local.get $0 i32.load offset=12 - local.tee $3 - local.get $3 + local.tee $5 + local.get $4 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 $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 +31440,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return end i32.const 32064 @@ -31639,40 +31475,40 @@ 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 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable 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 $1 + local.get $3 i32.const 1 i32.sub - local.tee $1 + local.tee $3 i32.const 2 i32.shl local.tee $4 call $~lib/memory/memory.copy - local.get $2 + local.get $1 local.get $4 i32.add 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 +31549,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 @@ -31876,14 +31712,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 +31727,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 +31739,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return end i32.const 32064 @@ -31959,13 +31795,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 +31811,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 $2 i32.store - local.get $3 + local.get $2 i32.load offset=4 local.get $0 i32.load offset=4 local.tee $5 - local.get $1 + 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 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 +31884,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 return end i32.const 32064 @@ -32085,52 +31921,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 $4 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 $5 i32.load local.set $6 - local.get $3 + local.get $5 + local.get $4 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 $5 i32.load i32.store - local.get $3 + local.get $5 local.get $6 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 @@ -32257,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 @@ -32292,29 +32128,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-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -32324,115 +32138,138 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 45 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - 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-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end local.get $0 - i32.const 0 i32.store - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 65 - i32.const 60 - call $~lib/builtins/abort - unreachable + 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 $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 70 + 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 $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + 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 $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 $3 + 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 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 $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $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 @@ -32508,25 +32345,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 +32371,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 +32411,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 +32432,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 +32452,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 +32483,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 +32499,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 +32519,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) @@ -32720,7 +32561,7 @@ if i32.const 1344 i32.const 1104 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -32814,7 +32655,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 @@ -32823,11 +32665,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 @@ -32851,6 +32690,7 @@ local.get $3 i32.lt_s if + local.get $2 local.get $0 local.get $2 i32.add @@ -32860,6 +32700,7 @@ i32.and i32.eq br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 1 i32.add @@ -32868,13 +32709,11 @@ end end i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 i32.const 0 i32.ge_s ) @@ -32911,7 +32750,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 @@ -32920,11 +32760,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 +32785,7 @@ local.get $3 i32.lt_s if + local.get $2 local.get $0 local.get $2 i32.add @@ -32957,6 +32795,7 @@ i32.and i32.eq br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 1 i32.add @@ -32965,17 +32804,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 @@ -33008,23 +32844,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 +32877,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 +32886,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 +32895,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 @@ -33127,13 +32962,13 @@ 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 $4 + local.tee $2 i32.add local.tee $3 i32.const 1073741820 @@ -33141,7 +32976,7 @@ if i32.const 1056 i32.const 1104 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -33159,14 +32994,14 @@ 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 $4 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -33221,35 +33056,36 @@ i32.const 2147483647 local.set $3 end - local.get $3 local.get $0 - local.tee $4 i32.load offset=12 - local.tee $5 + local.tee $4 + local.set $5 local.get $3 - local.get $5 + local.get $4 + local.get $3 + local.get $4 i32.lt_s select - local.set $6 + 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 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 i32.lt_s @@ -33262,63 +33098,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.get $3 - i32.add + local.tee $2 local.get $6 + i32.add + local.get $3 i32.const 0 i32.lt_s if (result i32) - local.get $5 - local.get $6 + local.get $3 + local.get $4 i32.add - local.tee $2 + local.tee $3 i32.const 0 - local.get $2 + local.get $3 i32.const 0 i32.gt_s select else - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.gt_s + local.get $3 + local.get $4 + local.get $3 + local.get $4 + i32.lt_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,12 +33180,12 @@ 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 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -33390,43 +33226,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 @@ -33450,13 +33286,13 @@ 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 +33301,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 $3 i32.store local.get $0 i32.load offset=12 - local.set $5 + local.set $4 loop $for-loop|0 - local.get $5 + local.get $4 local.get $0 i32.load offset=12 - local.tee $3 - local.get $3 + local.tee $5 + local.get $4 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 $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 +33362,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return end i32.const 32064 @@ -33560,37 +33396,37 @@ 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 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable 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 $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 +33467,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 @@ -33817,20 +33653,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 +33676,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return end i32.const 32064 @@ -33896,13 +33732,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 +33748,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 $2 i32.store - local.get $3 + local.get $2 i32.load offset=4 - local.get $1 + local.get $4 local.get $0 i32.load offset=4 local.tee $5 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 $4 local.get $5 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 +33813,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 return end i32.const 32064 @@ -34007,11 +33843,15 @@ 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) @@ -34252,14 +34092,14 @@ 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 +34112,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 +34138,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 +34152,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 @@ -34358,21 +34198,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 +34248,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 +34263,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 @@ -34457,23 +34296,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 +34341,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 +34356,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 @@ -34574,7 +34412,7 @@ if i32.const 1344 i32.const 1104 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -34594,7 +34432,7 @@ if i32.const 5952 i32.const 1104 - i32.const 144 + i32.const 151 i32.const 40 call $~lib/builtins/abort unreachable @@ -34721,10 +34559,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 @@ -34864,18 +34705,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 +34727,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 +34770,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 +34785,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 @@ -35010,14 +34849,11 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $3 - local.tee $2 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - i32.const 0 - local.set $2 local.get $3 i32.const 4 i32.sub @@ -35037,7 +34873,7 @@ i32.const 0 local.get $1 select - local.tee $6 + local.tee $5 i32.add local.tee $3 i32.const 268435455 @@ -35045,7 +34881,7 @@ if i32.const 1056 i32.const 1104 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -35056,11 +34892,11 @@ i32.const 33 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $6 i32.store - local.get $3 + local.get $6 i32.load offset=4 - local.set $5 + local.set $3 local.get $4 i32.const 2 i32.shl @@ -35074,7 +34910,7 @@ i32.lt_u if local.get $2 - local.get $5 + local.get $3 i32.add local.get $0 local.get $2 @@ -35082,10 +34918,13 @@ i32.load local.tee $7 i32.store - local.get $3 local.get $7 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $6 + local.get $7 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $2 i32.const 4 i32.add @@ -35093,22 +34932,22 @@ br $for-loop|0 end end + local.get $3 local.get $4 - local.get $5 i32.add 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 $5 + local.set $3 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $5 + local.get $3 i32.lt_u if local.get $0 @@ -35120,10 +34959,13 @@ i32.load local.tee $4 i32.store - local.get $3 local.get $4 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $6 + local.get $4 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.add @@ -35139,7 +34981,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $6 return end i32.const 32064 @@ -35180,12 +35022,12 @@ 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 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -35197,15 +35039,15 @@ local.get $1 i32.const 1 i32.sub - local.tee $1 + 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 $1 + local.get $3 i32.store offset=12 local.get $2 i32.const 4 @@ -35215,7 +35057,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $1 return end i32.const 32064 @@ -35239,13 +35081,13 @@ 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 +35100,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 +35126,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 @@ -35328,13 +35170,13 @@ 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 +35185,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 $3 i32.store local.get $0 i32.load offset=12 - local.set $5 + local.set $4 loop $for-loop|0 - local.get $5 + local.get $4 local.get $0 i32.load offset=12 - local.tee $3 - local.get $3 + local.tee $5 + local.get $4 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 $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 +35250,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return end i32.const 32064 @@ -35450,12 +35292,12 @@ 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 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable @@ -35463,12 +35305,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 @@ -35479,7 +35321,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 @@ -35495,7 +35337,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $1 return end i32.const 32064 @@ -35519,14 +35361,14 @@ 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 +35381,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 +35407,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 +35420,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 +35476,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) @@ -35763,14 +35608,14 @@ 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 $3 i32.store - local.get $2 + local.get $3 i32.load offset=4 local.set $4 local.get $0 @@ -35779,31 +35624,34 @@ i32.const 2 i32.shl i32.add - local.set $1 + local.set $5 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 $3 + local.get $1 i32.lt_u if local.get $0 local.get $4 i32.add local.get $0 - local.get $1 + local.get $5 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 + if + local.get $3 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.add @@ -35819,7 +35667,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return end i32.const 32064 @@ -35875,13 +35723,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 +35739,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 $2 i32.store - local.get $3 + local.get $2 i32.load offset=4 local.get $0 i32.load offset=4 local.tee $5 - local.get $1 + 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 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 +35812,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 return end i32.const 32064 @@ -35996,10 +35844,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,40 +35859,40 @@ 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 $3 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.store local.get $4 + local.get $3 local.get $1 - local.get $2 i32.sub i32.const 2 i32.shl - local.get $5 + local.get $2 i32.add local.tee $4 i32.load @@ -36052,10 +35900,10 @@ local.get $4 local.get $6 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 @@ -36189,8 +36037,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 @@ -36234,4 +36085,77 @@ 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 + ) ) diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index c2c0f7c8d6..2202591239 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)) @@ -1948,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 @@ -4258,7 +4263,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4434,7 +4439,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4585,7 +4590,7 @@ if i32.const 32 i32.const 80 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -4629,14 +4634,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 +4697,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4725,7 +4726,7 @@ if i32.const 1152 i32.const 80 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -4802,7 +4803,7 @@ if i32.const 320 i32.const 80 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -5053,7 +5054,7 @@ if i32.const 1152 i32.const 80 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable @@ -5502,7 +5503,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -6040,7 +6041,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -6589,7 +6590,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -9116,7 +9117,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -12053,7 +12054,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -12970,7 +12971,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -14990,7 +14991,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -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 @@ -19166,7 +19170,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -19210,7 +19214,7 @@ if i32.const 320 i32.const 80 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -19541,7 +19545,7 @@ if i32.const 1152 i32.const 80 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -19623,7 +19627,7 @@ if i32.const 1152 i32.const 80 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable @@ -19836,7 +19840,7 @@ drop i32.const 14128 i32.const 80 - i32.const 462 + i32.const 469 i32.const 7 call $~lib/builtins/abort unreachable @@ -20079,7 +20083,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -20123,7 +20127,7 @@ if i32.const 320 i32.const 80 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -20458,7 +20462,7 @@ if i32.const 1152 i32.const 80 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -20540,7 +20544,7 @@ if i32.const 1152 i32.const 80 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable @@ -21581,7 +21585,7 @@ drop i32.const 14128 i32.const 80 - i32.const 462 + i32.const 469 i32.const 7 call $~lib/builtins/abort unreachable @@ -22061,7 +22065,7 @@ drop i32.const 14128 i32.const 80 - i32.const 462 + i32.const 469 i32.const 7 call $~lib/builtins/abort unreachable @@ -36972,7 +36976,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -36994,10 +36998,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 +37091,7 @@ if i32.const 32 i32.const 576 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -37101,10 +37105,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 +37279,7 @@ if i32.const 32 i32.const 80 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -37699,7 +37703,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -37724,7 +37728,7 @@ if i32.const 4928 i32.const 80 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -37879,7 +37883,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -38628,7 +38632,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -38653,7 +38657,7 @@ if i32.const 4928 i32.const 80 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -38710,7 +38714,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -38732,10 +38736,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 +38840,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -38861,7 +38865,7 @@ if i32.const 4928 i32.const 80 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -38918,7 +38922,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -38940,10 +38944,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 +39017,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -39038,7 +39042,7 @@ if i32.const 4928 i32.const 80 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -39069,7 +39073,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -39141,7 +39145,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -39163,10 +39167,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 +39321,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -39342,7 +39346,7 @@ if i32.const 4928 i32.const 80 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -42401,7 +42405,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -42423,10 +42427,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 +42524,7 @@ if i32.const 32 i32.const 80 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -42926,7 +42930,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -42948,10 +42952,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 +43049,7 @@ if i32.const 32 i32.const 80 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -43471,7 +43475,7 @@ if i32.const 320 i32.const 80 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -43496,7 +43500,7 @@ if i32.const 4928 i32.const 80 - i32.const 144 + i32.const 151 i32.const 40 call $~lib/builtins/abort unreachable @@ -43554,7 +43558,7 @@ if i32.const 32 i32.const 80 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -43679,7 +43683,7 @@ if i32.const 1152 i32.const 80 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -43813,7 +43817,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 9558268068..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))) @@ -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 @@ -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 @@ -225,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) @@ -285,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 @@ -301,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 @@ -334,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 @@ -371,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 @@ -381,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 @@ -519,7 +489,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -530,7 +500,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -550,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 @@ -597,7 +566,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -607,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 @@ -648,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 @@ -675,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 @@ -695,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 @@ -724,6 +690,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -733,7 +702,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -770,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 @@ -848,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 @@ -895,271 +937,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1237,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 $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - 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 $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - 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) @@ -1475,18 +1266,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1497,54 +1287,51 @@ call $~lib/builtins/abort unreachable end + local.get $5 + 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 - 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 @@ -1552,16 +1339,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 +1357,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1578,9 +1365,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 +1378,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 +1393,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 +1411,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 + local.set $3 + local.get $2 global.get $~lib/rt/itcms/white local.get $1 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,13 +1501,185 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + 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) @@ -1735,17 +1694,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 +1850,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 +1877,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 +1888,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 +1899,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 +1913,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 +1943,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 +1968,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 +1979,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 +1990,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 +2004,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 +2030,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 +2055,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 +2066,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 +2077,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 +2091,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 +2128,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 +2247,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 +2310,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 +2321,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 +2339,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 @@ -2587,93 +2518,38 @@ local.get $4 i32.const 8 i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end end end end @@ -2689,7 +2565,7 @@ 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 + 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 @@ -2697,7 +2573,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 return end unreachable @@ -2707,7 +2587,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 +2596,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 +2616,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 +2657,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 +2666,23 @@ 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 - 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,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3036,6 +2912,7 @@ 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 @@ -3066,9 +2943,12 @@ local.tee $0 local.get $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 local.get $0 local.get $2 i32.store offset=4 @@ -3119,13 +2999,13 @@ global.get $~lib/memory/__stack_pointer local.get $1 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.lt_u + 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,12 +3257,11 @@ i32.const 1073741820 local.get $1 i32.shr_u - i32.const 1 - i32.lt_u + i32.eqz if i32.const 1056 i32.const 1104 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -3394,25 +3270,25 @@ 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 - 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 +3296,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/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 7ecfbcb398..48fd5021e3 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)) @@ -1539,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 @@ -4021,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 @@ -4674,7 +4680,7 @@ if i32.const 32 i32.const 80 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -4685,10 +4691,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 +4840,7 @@ if i32.const 32 i32.const 80 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -4848,10 +4854,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 25c85b01f1..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))) @@ -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 @@ -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 @@ -231,30 +229,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 +265,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 +280,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 +310,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 +347,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 +357,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 +495,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -536,7 +506,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -556,44 +526,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 +572,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -613,20 +582,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 +623,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 +650,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 +667,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 +696,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -739,7 +708,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -776,8 +745,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 @@ -854,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 @@ -901,271 +943,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1243,183 +1210,7 @@ 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 $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - 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 $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - 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) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1481,18 +1272,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1503,54 +1293,51 @@ call $~lib/builtins/abort unreachable end + local.get $5 + 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 - 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 @@ -1558,16 +1345,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 +1363,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1584,9 +1371,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 +1384,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 +1399,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 +1417,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 + local.set $3 + local.get $2 global.get $~lib/rt/itcms/white local.get $1 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,68 +1507,185 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if + 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.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 + i32.store8 local.get $0 - i32.const 20 + 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.load offset=4 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 - 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 + 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 3 - i32.eq - select + i32.const 32 + i32.ge_u if local.get $1 - call $~lib/rt/itcms/Object#makeGray + 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 @@ -1942,21 +1846,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 +1992,16 @@ 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 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 +2198,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 +2306,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 +2421,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 @@ -2550,10 +2442,10 @@ 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 memory.size @@ -2588,7 +2480,7 @@ i32.store i32.const 1456 global.set $~lib/rt/itcms/fromSpace - local.get $0 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2597,14 +2489,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 +2510,109 @@ 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 $3 i32.store offset=4 - local.get $2 - i32.const 8 - call $~lib/memory/memory.fill - local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + local.get $3 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 $0 local.get $1 + local.get $0 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 +2626,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 +2640,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 +2654,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 +2668,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 +2682,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 +2696,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 +2710,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 +2724,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 +2738,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 +2752,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 +2765,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 +2778,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 +2791,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 +2804,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 +2817,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 +2830,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 +2843,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 +2856,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 +2869,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 +2882,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 +2898,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 +2914,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 +2930,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 +2946,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 +2962,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 +2978,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 +2994,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 +3010,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 +3026,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 +3042,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 +3058,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 +3074,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 +3090,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 +3106,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 +3120,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 +3134,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 +3148,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 +3162,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 +3176,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 +3190,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 +3204,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 +3218,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 +3232,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 +3246,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 +3259,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 +3272,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 +3285,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 +3298,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 +3311,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 +3324,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 +3337,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 +3350,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 +3363,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 +3376,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 +3392,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 +3408,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 +3424,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 +3440,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 +3456,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 +3472,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 +3488,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 +3504,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 +3520,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 +3536,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 +3552,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 +3568,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 +3584,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 +3600,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 +3614,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 +3628,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 +3642,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 +3656,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 +3670,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 +3684,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 +3698,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 +3712,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 +3726,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 +3740,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 +3753,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 +3766,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 +3784,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 +3802,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 +3819,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 +3836,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.eqz if @@ -3958,11 +3847,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 +3864,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 +3884,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 +3904,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 +3922,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 +3940,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 +3957,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 +3974,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.eqz if @@ -4096,11 +3985,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 +4002,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 +4022,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 +4042,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 +4060,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 +4078,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 +4095,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 +4113,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 +4141,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 8 i32.ne @@ -4344,9 +4233,6 @@ i32.store local.get $3 i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 - i32.const 0 i32.store offset=4 local.get $3 i32.const 0 @@ -4374,9 +4260,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 $0 local.get $1 @@ -4391,4 +4280,72 @@ 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 + 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.untouched.wat b/tests/compiler/std/dataview.untouched.wat index c7a83d2dd4..2950f7f29b 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)) @@ -1546,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 @@ -3296,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 @@ -5160,7 +5166,7 @@ if i32.const 32 i32.const 80 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -5174,10 +5180,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 f3d2b4092c..44fa1b416f 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 @@ -562,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 @@ -592,30 +589,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 +625,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 +640,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 +670,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 +707,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 +717,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 +855,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -897,7 +866,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -917,44 +886,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 +932,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -974,20 +942,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 +983,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 +1010,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 +1027,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 +1056,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1100,7 +1068,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1137,8 +1105,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 @@ -1215,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 - global.set $~lib/rt/itcms/iter - br $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 - 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 + i32.const 1 + global.set $~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 - i32.ne + global.set $~lib/rt/itcms/iter + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -1262,271 +1303,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 + else 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 @@ -1604,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 $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - 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 $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - 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) @@ -1842,18 +1632,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1864,54 +1653,51 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $5 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 - local.tee $3 - 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.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 + select + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + 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 +1705,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 +1723,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1945,9 +1731,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 +1744,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 +1759,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,103 +1777,275 @@ 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 $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 $2 + 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 4 - i32.add - i32.add - local.tee $2 - local.get $6 - i32.const 4 + i32.const 24 i32.sub - i32.const 1 - i32.or + i32.const 0 i32.store - local.get $5 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else local.get $3 - local.get $4 - i32.const -2 - i32.and + 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.add - local.get $3 - i32.load - i32.const -4 i32.and + i32.const 24 i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + 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 $3 - local.get $1 - i32.store offset=12 - local.get $3 - 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.get $1 - i32.or - i32.store offset=4 - local.get $3 local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $3 - i32.or - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $3 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $3 - i32.const 20 - i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 ) (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) local.get $1 @@ -2131,45 +2089,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 @@ -2178,26 +2137,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 @@ -2206,26 +2166,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 @@ -2234,14 +2195,14 @@ i32.const 3600000 i32.mul i64.extend_i32_s + local.get $3 i64.add 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 +2211,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 +2258,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 +2288,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 +2299,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 +2348,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 +2365,7 @@ i32.div_u i32.sub i32.add - local.get $3 + local.get $1 i32.const 146097 i32.mul i32.add @@ -2417,9 +2378,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 +2388,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 +2436,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 +2453,7 @@ i32.div_u i32.sub i32.add - local.get $3 + local.get $1 i32.const 146097 i32.mul i32.add @@ -2539,6 +2500,7 @@ 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 @@ -2549,49 +2511,46 @@ local.tee $3 select local.tee $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - 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 @@ -2733,17 +2692,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 +2848,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 +2875,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 +2886,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 +2897,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 +2911,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 +2941,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 +2966,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 +2977,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 +2988,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 +3002,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 +3028,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 +3053,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 +3064,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 +3075,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 +3089,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 +3126,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 @@ -3308,59 +3245,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 +3308,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 +3319,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 +3337,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 @@ -3711,12 +3642,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 +3759,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 +3771,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 +3784,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 +3818,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) @@ -3956,66 +3826,63 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - i32.load offset=12 - local.tee $7 - i32.const 1 - i32.add - local.tee $8 - local.tee $3 local.get $0 + local.tee $2 i32.load offset=8 - local.tee $5 + 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 $3 + local.get $4 i32.const 268435455 i32.gt_u 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 (result i32) - local.get $5 + block $__inlined_func$~lib/rt/itcms/__renew + local.get $0 i32.const 1 i32.shl - local.tee $2 + local.tee $0 i32.const 1073741820 - local.get $2 + local.get $0 i32.const 1073741820 i32.lt_u select - local.tee $2 - local.get $3 + local.tee $0 + local.get $4 i32.const 8 - local.get $3 + local.get $4 i32.const 8 i32.gt_u select i32.const 2 i32.shl local.tee $3 - local.get $2 + local.get $0 local.get $3 i32.gt_u select - local.tee $3 - local.tee $2 - local.get $0 + local.tee $7 + local.get $2 i32.load - local.tee $9 local.tee $6 + local.tee $0 i32.const 20 i32.sub - local.tee $4 + local.tee $8 i32.load i32.const -4 i32.and @@ -4023,69 +3890,68 @@ i32.sub i32.le_u if - local.get $4 - local.get $2 + local.get $8 + local.get $7 i32.store offset=16 - local.get $6 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $2 - local.get $4 + local.get $7 + local.get $8 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $10 - local.get $6 - local.get $2 - local.get $4 + local.tee $3 + local.get $0 + local.get $7 + local.get $8 i32.load offset=16 - local.tee $4 - local.get $2 - local.get $4 - i32.lt_u + local.tee $0 + local.get $0 + local.get $7 + i32.gt_u select call $~lib/memory/memory.copy - local.get $10 + local.get $3 + local.set $0 end - local.tee $2 - local.get $5 - i32.add - local.get $3 - local.get $5 - i32.sub - call $~lib/memory/memory.fill - local.get $2 - local.get $9 + local.get $0 + local.get $6 i32.ne if - local.get $0 local.get $2 - i32.store local.get $0 + i32.store local.get $2 + local.get $0 i32.store offset=4 local.get $0 - local.get $2 - 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 end - local.get $0 - local.get $3 + local.get $2 + local.get $7 i32.store offset=8 end - local.get $0 + local.get $2 i32.load offset=4 - local.get $7 + local.get $5 i32.const 2 i32.shl i32.add local.get $1 i32.store - local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $8 + if + local.get $2 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $4 i32.store offset=12 ) (func $~lib/util/string/strtol (param $0 i32) (result i32) @@ -4107,28 +3973,29 @@ return end local.get $0 + local.tee $1 i32.load16_u - local.set $1 + local.set $0 loop $while-continue|0 block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $1 + local.get $0 i32.const 128 i32.or i32.const 160 i32.eq - local.get $1 + local.get $0 i32.const 9 i32.sub i32.const 4 i32.le_u i32.or - local.get $1 + local.get $0 i32.const 5760 i32.lt_u br_if $__inlined_func$~lib/util/string/isSpace drop i32.const 1 - local.get $1 + local.get $0 i32.const -8192 i32.add i32.const 10 @@ -4137,31 +4004,31 @@ drop block $break|0 block $case6|0 - local.get $1 + local.get $0 i32.const 5760 i32.eq br_if $case6|0 - local.get $1 + local.get $0 i32.const 8232 i32.eq br_if $case6|0 - local.get $1 + local.get $0 i32.const 8233 i32.eq br_if $case6|0 - local.get $1 + local.get $0 i32.const 8239 i32.eq br_if $case6|0 - local.get $1 + local.get $0 i32.const 8287 i32.eq br_if $case6|0 - local.get $1 + local.get $0 i32.const 12288 i32.eq br_if $case6|0 - local.get $1 + local.get $0 i32.const 65279 i32.eq br_if $case6|0 @@ -4173,12 +4040,12 @@ i32.const 0 end if - local.get $0 + local.get $1 i32.const 2 i32.add - local.tee $0 + local.tee $1 i32.load16_u - local.set $1 + local.set $0 local.get $2 i32.const 1 i32.sub @@ -4187,16 +4054,15 @@ end end i32.const 1 - local.set $3 - i32.const 1 - local.get $1 + local.set $5 + local.get $0 i32.const 43 i32.eq - local.get $1 + local.get $0 i32.const 45 i32.eq - select - if + i32.or + if (result i32) local.get $2 i32.const 1 i32.sub @@ -4208,125 +4074,124 @@ end i32.const -1 i32.const 1 - local.get $1 + local.get $0 i32.const 45 i32.eq select - local.set $3 - local.get $0 + local.set $5 + local.get $1 i32.const 2 i32.add - local.tee $0 + local.tee $1 i32.load16_u - local.set $1 + else + local.get $0 end + i32.const 48 + i32.eq local.get $2 i32.const 2 i32.gt_s - i32.const 0 - local.get $1 - i32.const 48 - i32.eq - select + i32.and if block $break|1 block $case2|1 block $case1|1 - local.get $0 + local.get $1 i32.load16_u offset=2 i32.const 32 i32.or - local.tee $1 + local.tee $0 i32.const 98 i32.ne if - local.get $1 + local.get $0 i32.const 111 i32.eq br_if $case1|1 - local.get $1 + local.get $0 i32.const 120 i32.eq br_if $case2|1 br $break|1 end - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 + local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 i32.const 2 - local.set $4 + local.set $3 br $break|1 end - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 + local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 i32.const 8 - local.set $4 + local.set $3 br $break|1 end - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 + local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 i32.const 16 - local.set $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 $2 - local.tee $1 + local.tee $0 i32.const 1 i32.sub local.set $2 - local.get $1 + local.get $0 if - local.get $0 + local.get $1 i32.load16_u - local.tee $1 + local.tee $0 i32.const 48 i32.sub i32.const 10 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 48 i32.sub else - local.get $1 + local.get $0 i32.const 65 i32.sub i32.const 25 i32.le_u if (result i32) - local.get $1 + local.get $0 i32.const 55 i32.sub else - local.get $1 + local.get $0 i32.const 87 i32.sub - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 97 i32.sub i32.const 25 @@ -4334,11 +4199,11 @@ select end end - local.tee $1 - 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 @@ -4346,21 +4211,21 @@ end br $while-break|2 end - local.get $1 + local.get $0 + local.get $3 local.get $4 - local.get $5 i32.mul i32.add - local.set $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 ) @@ -4368,8 +4233,8 @@ (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 @@ -4380,7 +4245,7 @@ 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 + 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 @@ -4391,81 +4256,79 @@ 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 - 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 - i32.load - call $~lib/rt/itcms/__visit - return + br $folding-inner0 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 +4341,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 @@ -4541,32 +4405,30 @@ i64.store offset=104 local.get $0 i32.load - local.tee $1 + local.tee $3 i32.const 0 i32.lt_s - local.set $2 - i32.const 1 - local.get $1 + local.tee $1 + local.get $3 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 i32.const 1616 i32.const 1648 - local.get $2 + local.get $1 select - local.tee $2 + local.tee $5 i32.store - local.get $1 - local.get $1 + local.get $3 i32.const 31 i32.shr_s local.tee $1 - i32.add local.get $1 + local.get $3 + i32.add i32.xor call $~lib/number/I32#toString local.set $1 @@ -4583,24 +4445,24 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - local.get $3 - local.get $2 + 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 @@ -4619,22 +4481,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 +4515,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 +4546,38 @@ 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.get $3 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer 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 +4593,38 @@ 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.get $3 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer 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 +4640,38 @@ 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.get $3 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer 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 +4687,25 @@ 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.get $0 i32.store offset=12 - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=28 local.get $0 @@ -4917,119 +4775,118 @@ 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 $2 i32.const 4560 i32.const 28 call $~lib/memory/memory.copy local.get $1 - local.tee $3 + local.get $2 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 $5 local.get $0 i32.load offset=4 - local.tee $6 + local.tee $1 i32.const 3 i32.lt_s i32.sub - local.tee $2 + local.set $4 + i32.const 7 i32.const 0 - i32.ge_s - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $7 - local.get $6 + local.get $1 i32.const 1579 i32.add i32.load8_u - local.get $2 - local.get $2 - local.get $2 + local.get $4 + local.get $4 i32.const 3 i32.sub - local.get $5 + local.get $4 + i32.const 0 + i32.ge_s + local.tee $6 select i32.const 4 i32.div_s - local.get $2 - local.get $2 + local.get $4 + local.get $4 i32.const 99 i32.sub - local.get $5 + local.get $6 select i32.const 100 i32.div_s i32.sub - local.get $2 - local.get $2 + local.get $4 + local.get $4 i32.const 399 i32.sub - local.get $5 + local.get $6 select i32.const 400 i32.div_s i32.add + 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 $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $4 + local.get $5 i32.const 31 i32.shr_s - local.tee $0 + local.tee $7 + local.get $5 + local.get $7 i32.add - local.get $0 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 $5 i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $5 i32.const 1616 i32.store offset=8 - local.get $4 + local.get $5 i32.const 1616 local.get $0 call $~lib/string/String.__concat @@ -5037,22 +4894,22 @@ i32.store offset=16 end global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $2 + local.tee $5 + local.get $6 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load local.tee $2 i32.store offset=32 - local.get $4 - local.get $6 + local.get $5 + local.get $1 i32.const 1 i32.sub i32.const 2 i32.shl - local.get $1 + local.get $3 i32.add i32.load local.tee $1 @@ -5064,7 +4921,7 @@ 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,10 +4963,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 $4 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 40 i32.sub @@ -5126,121 +4982,119 @@ 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.get $2 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer 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 $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 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 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 + local.get $3 i32.store offset=20 - local.get $1 local.get $2 + local.get $3 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 +5102,9 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 local.get $0 i32.store offset=8 - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=16 local.get $0 @@ -5261,7 +5114,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 @@ -5272,9 +5125,9 @@ (func $~lib/date/Date#toUTCString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) - (local $5 i64) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -5295,212 +5148,212 @@ 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 $1 + local.tee $5 i32.const 6048 i32.const 48 call $~lib/memory/memory.copy - local.get $1 + local.get $5 i32.store offset=4 local.get $0 i32.load local.tee $6 local.get $0 i32.load offset=4 - local.tee $7 + local.tee $4 i32.const 3 i32.lt_s i32.sub - local.tee $4 - i32.const 0 - i32.ge_s local.set $2 + i32.const 7 + i32.const 0 local.get $0 i32.load offset=8 - local.tee $8 - local.get $7 + local.tee $7 + local.get $4 i32.const 1579 i32.add i32.load8_u - local.get $4 - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.const 3 i32.sub local.get $2 + i32.const 0 + i32.ge_s + local.tee $8 select i32.const 4 i32.div_s - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.const 99 i32.sub - local.get $2 + local.get $8 select i32.const 100 i32.div_s i32.sub - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.const 399 i32.sub - local.get $2 + local.get $8 select i32.const 400 i32.div_s i32.add + local.get $2 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $2 - i32.const 7 - i32.const 0 - local.get $2 i32.const 0 i32.lt_s select + local.get $2 i32.add - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer local.get $6 - local.get $6 i32.const 31 i32.shr_s - local.tee $2 + local.tee $9 + local.get $6 + local.get $9 i32.add - local.get $2 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 $2 i32.store offset=16 local.get $6 i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $6 i32.const 1616 i32.store offset=8 - local.get $2 + local.get $6 i32.const 1616 - local.get $4 + local.get $2 call $~lib/string/String.__concat - local.tee $4 + local.tee $2 i32.store offset=16 end global.get $~lib/memory/__stack_pointer - local.get $9 + 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 $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=88 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=92 - local.get $2 + local.get $6 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=84 - local.get $3 - local.get $2 + 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 $7 + local.get $4 i32.const 1 i32.sub i32.const 2 i32.shl - local.get $1 + local.get $5 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 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=68 local.get $1 - local.get $4 + local.get $2 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -5512,43 +5365,42 @@ 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 + i64.const 86400000 + i64.const 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 + 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 $1 - local.get $3 + local.get $2 i32.store offset=60 - local.get $1 + 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 $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=56 local.get $2 + i32.store offset=56 local.get $1 + local.get $2 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -5560,43 +5412,42 @@ 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 + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s - local.tee $5 - i64.const 3600000 - i64.const 0 - local.get $5 + 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 $1 - local.get $3 + local.get $2 i32.store offset=44 - local.get $1 + 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 $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=40 local.get $2 + i32.store offset=40 local.get $1 + local.get $2 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -5608,42 +5459,41 @@ 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 + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s - local.tee $5 - i64.const 60000 - i64.const 0 - local.get $5 + local.tee $3 i64.const 0 i64.lt_s select + local.get $3 i64.add i32.wrap_i64 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.get $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer 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 +5536,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 +5564,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 +5579,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 +5603,7 @@ br $folding-inner1 end else - local.get $2 + local.get $8 i32.eqz if i32.const 0 @@ -5759,9 +5612,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 +5624,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 +5634,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 +5647,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 +5675,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 +5716,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 +5738,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 +5749,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 +5808,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 +5860,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 +5891,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 +5905,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 +5939,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 +5966,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 +5982,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 +6033,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 @@ -6192,7 +6047,7 @@ (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 @@ -6225,17 +6080,19 @@ i64.store offset=24 local.get $0 i32.const 0 - i32.store offset=32 + 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 @@ -6243,7 +6100,7 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 + local.get $2 i64.eqz i32.eqz if @@ -6263,6 +6120,7 @@ i32.const 0 call $~lib/date/epochMillis local.tee $1 + local.get $1 i64.const -8640000000000000 i64.lt_s local.get $1 @@ -6270,7 +6128,6 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 i64.eqz i32.eqz if @@ -6290,6 +6147,7 @@ i32.const 0 call $~lib/date/epochMillis local.tee $1 + local.get $1 i64.const -8640000000000000 i64.lt_s local.get $1 @@ -6297,7 +6155,6 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 i64.eqz i32.eqz if @@ -6317,6 +6174,7 @@ i32.const 0 call $~lib/date/epochMillis local.tee $1 + local.get $1 i64.const -8640000000000000 i64.lt_s local.get $1 @@ -6324,7 +6182,6 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 i64.const 631152000000 i64.ne if @@ -6344,6 +6201,7 @@ i32.const 0 call $~lib/date/epochMillis local.tee $1 + local.get $1 i64.const -8640000000000000 i64.lt_s local.get $1 @@ -6351,7 +6209,6 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 i64.const -65007360000000 i64.ne if @@ -6371,6 +6228,7 @@ i32.const 1 call $~lib/date/epochMillis local.tee $1 + local.get $1 i64.const -8640000000000000 i64.lt_s local.get $1 @@ -6378,7 +6236,6 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 i64.const 1541847600001 i64.ne if @@ -6398,6 +6255,7 @@ i32.const 0 call $~lib/date/epochMillis local.tee $1 + local.get $1 i64.const -8640000000000000 i64.lt_s local.get $1 @@ -6405,7 +6263,6 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 i64.const 8640000000000000 i64.ne if @@ -6521,17 +6378,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 +6403,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 +6428,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 +6453,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 +6517,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 +6542,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 +6567,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 +6592,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 +6620,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 +6646,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 +6672,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 +6728,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 +6764,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 +6802,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 +6830,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 +6858,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 +6918,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 +6946,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 +6974,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 +7034,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 +7062,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 +7090,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 +7255,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 +7280,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 +7305,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 +7466,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 $3 i32.const 3 i32.lt_s i32.sub - local.tee $0 + local.set $4 + i32.const 7 i32.const 0 - i32.ge_s - local.set $3 - local.get $2 + local.get $0 i32.load offset=8 - local.get $4 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + 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 $0 - local.get $0 + local.get $4 + local.get $4 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 $4 + local.get $4 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $4 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 +7539,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 $3 i32.const 3 i32.lt_s i32.sub - local.tee $0 + local.set $4 + i32.const 7 i32.const 0 - i32.ge_s - local.set $3 - local.get $2 + local.get $0 i32.load offset=8 - local.get $4 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + 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 $0 - local.get $0 + local.get $4 + local.get $4 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 $4 + local.get $4 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $4 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 +7612,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 $3 i32.const 3 i32.lt_s i32.sub - local.tee $0 + local.set $4 + i32.const 7 i32.const 0 - i32.ge_s - local.set $3 - local.get $2 + local.get $0 i32.load offset=8 - local.get $4 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + 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 $0 - local.get $0 + local.get $4 + local.get $4 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 $4 + local.get $4 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $4 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 +7685,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 $3 i32.const 3 i32.lt_s i32.sub - local.tee $0 + local.set $4 + i32.const 7 i32.const 0 - i32.ge_s - local.set $3 - local.get $2 + local.get $0 i32.load offset=8 - local.get $4 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + 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 $0 - local.get $0 + local.get $4 + local.get $4 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 $4 + local.get $4 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $4 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 +7758,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 $3 i32.const 3 i32.lt_s i32.sub - local.tee $0 + local.set $4 + i32.const 7 i32.const 0 - i32.ge_s - local.set $3 - local.get $2 + local.get $0 i32.load offset=8 - local.get $4 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + 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 $0 - local.get $0 + local.get $4 + local.get $4 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 $4 + local.get $4 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $4 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 +7831,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 $3 i32.const 3 i32.lt_s i32.sub - local.tee $0 + local.set $4 + i32.const 7 i32.const 0 - i32.ge_s - local.set $3 - local.get $2 + local.get $0 i32.load offset=8 - local.get $4 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + 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 $0 - local.get $0 + local.get $4 + local.get $4 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 $4 + local.get $4 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $4 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 +7904,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 $3 i32.const 3 i32.lt_s i32.sub - local.tee $0 + local.set $4 + i32.const 7 i32.const 0 - i32.ge_s - local.set $3 - local.get $2 + local.get $0 i32.load offset=8 - local.get $4 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + 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 $0 - local.get $0 + local.get $4 + local.get $4 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 $4 + local.get $4 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $4 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 +7977,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 $3 i32.const 3 i32.lt_s i32.sub - local.tee $0 + local.set $4 + i32.const 7 i32.const 0 - i32.ge_s - local.set $3 - local.get $2 + local.get $0 i32.load offset=8 - local.get $4 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + 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 $0 - local.get $0 + local.get $4 + local.get $4 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 $4 + local.get $4 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $4 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 @@ -9080,7 +8937,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 @@ -9094,7 +8951,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i64.load offset=16 i64.const 8640000000000000 i64.ne @@ -9118,7 +8975,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load i32.const 275760 i32.ne @@ -9142,7 +8999,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load offset=4 i32.const 9 i32.ne @@ -9166,7 +9023,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load offset=8 i32.const 13 i32.ne @@ -9182,10 +9039,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 @@ -9200,14 +9057,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 @@ -9225,14 +9082,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 $3 i32.store offset=12 - local.get $0 + local.get $3 i32.load i32.const -271821 i32.ne @@ -9244,7 +9101,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=4 i32.const 4 i32.ne @@ -9256,7 +9113,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 20 i32.ne @@ -9268,17 +9125,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i64.const 86400000 + i64.const 0 + local.get $3 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 +9148,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i64.const 3600000 + i64.const 0 + local.get $3 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 +9171,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i64.const 60000 + i64.const 0 + local.get $3 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 +9194,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i64.const 1000 + i64.const 0 + local.get $3 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 +9217,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.tee $4 + local.get $0 i32.store offset=28 - local.get $3 + local.get $4 i32.const 7360 i32.store offset=32 - local.get $2 + local.get $0 i32.const 7360 call $~lib/string/String.__eq i32.eqz @@ -9382,14 +9239,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + 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 @@ -9504,6 +9361,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -9522,7 +9380,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 +9387,7 @@ i32.const 1 i32.shl local.tee $2 + i32.eqz local.get $0 i32.const 20 i32.sub @@ -9538,14 +9396,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 +9415,35 @@ 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 $6 i32.lt_u if + local.get $6 local.get $2 - local.get $4 + local.get $6 i32.const 2 i32.sub local.get $2 i32.div_u + local.tee $7 + i32.mul + local.tee $8 + i32.sub + local.set $1 + local.get $2 + local.get $7 i32.mul - local.tee $1 local.set $7 loop $while-continue|0 - local.get $1 - local.get $5 - i32.gt_u + local.get $3 + local.get $7 + i32.lt_u if local.get $3 local.get $5 @@ -9588,37 +9452,35 @@ 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 $7 + local.get $5 + local.get $8 i32.add i32.const 1872 - local.get $4 - local.get $7 - i32.sub + local.get $1 call $~lib/memory/memory.copy else - local.get $3 + local.get $5 i32.const 1872 - local.get $4 + local.get $6 call $~lib/memory/memory.copy end - local.get $3 - local.get $4 + local.get $5 + local.get $6 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) @@ -9673,9 +9535,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 @@ -9688,10 +9551,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 +9568,7 @@ local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.eq local.get $4 select @@ -9718,7 +9581,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 +9590,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,26 +9625,29 @@ local.get $0 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 i32.const 16 i32.const 5 call $~lib/rt/itcms/__new local.tee $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 @@ -9818,7 +9684,7 @@ if i32.const 1392 i32.const 6496 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -9838,7 +9704,7 @@ if i32.const 6544 i32.const 6496 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -9849,4 +9715,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..1d5aadc95d 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)) @@ -236,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 @@ -1889,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 @@ -2959,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 @@ -3009,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 @@ -3057,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 @@ -5270,7 +5279,7 @@ if i32.const 5424 i32.const 5472 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -5314,14 +5323,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 @@ -5396,14 +5401,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 @@ -11332,7 +11340,7 @@ if i32.const 368 i32.const 5472 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -11357,7 +11365,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 1123142e58..5eabd47e1c 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 @@ -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 @@ -239,30 +237,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 +273,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 +288,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 +318,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 +355,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 +365,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 +503,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -544,7 +514,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -564,44 +534,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 +580,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -621,20 +590,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 +631,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 +658,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 +675,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 +704,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -747,7 +716,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -784,8 +753,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 @@ -862,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 @@ -909,271 +951,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1251,183 +1218,7 @@ 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 $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - 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 $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - 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) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1489,18 +1280,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1511,54 +1301,51 @@ call $~lib/builtins/abort unreachable end + local.get $5 + 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 - 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 +1353,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 +1371,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1592,9 +1379,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 +1392,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 +1407,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 +1425,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 + local.set $3 + local.get $2 global.get $~lib/rt/itcms/white local.get $1 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,68 +1515,185 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if + 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.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 + i32.store8 local.get $0 - i32.const 20 + 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.load offset=4 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 - 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 + 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 3 - i32.eq - select + i32.const 32 + i32.ge_u if local.get $1 - call $~lib/rt/itcms/Object#makeGray + 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/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) @@ -1826,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 @@ -1834,7 +1738,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,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 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -1856,19 +1760,19 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=8 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 local.get $2 - local.get $7 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 @@ -1905,7 +1809,7 @@ i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -1918,30 +1822,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 12 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 @@ -1959,6 +1869,7 @@ local.get $0 i32.load offset=4 local.get $1 + local.tee $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -1969,23 +1880,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 @@ -1998,22 +1909,23 @@ local.get $0 if 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 - local.get $2 + local.get $0 i32.const -2 i32.and local.set $0 @@ -2021,9 +1933,9 @@ end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.eqz if i32.const 1616 @@ -2033,7 +1945,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) @@ -2049,17 +1961,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 +2117,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 +2144,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 +2155,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 +2166,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 +2180,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 +2210,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 +2235,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 +2246,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 +2257,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 +2271,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 +2297,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 +2322,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 +2333,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 +2344,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 +2358,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2483,134 +2395,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 @@ -2624,7 +2577,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2632,54 +2585,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 @@ -2687,52 +2606,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 @@ -2752,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 @@ -2769,14 +2652,14 @@ if i32.const 1456 i32.const 1728 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable end local.get $0 i32.load - local.set $4 + local.set $7 local.get $1 i32.const 8 local.get $1 @@ -2785,34 +2668,33 @@ select local.get $2 i32.shl - local.set $1 - block $__inlined_func$~lib/rt/itcms/__renew (result i32) + local.set $6 + block $__inlined_func$~lib/rt/itcms/__renew local.get $3 - if (result i32) - local.get $8 + if + local.get $4 i32.const 1 i32.shl - local.tee $2 + local.tee $1 i32.const 1073741820 - local.get $2 + local.get $1 i32.const 1073741820 i32.lt_u select - local.tee $2 - local.get $1 + local.tee $1 + local.get $6 local.get $1 - local.get $2 - i32.lt_u + local.get $6 + i32.gt_u select - else - local.get $1 + local.set $6 end - local.tee $6 - local.get $4 - local.tee $2 + local.get $6 + local.get $7 + local.tee $1 i32.const 20 i32.sub - local.tee $1 + local.tee $2 i32.load i32.const -4 i32.and @@ -2820,80 +2702,78 @@ i32.sub i32.le_u if - local.get $1 + local.get $2 local.get $6 i32.store offset=16 - local.get $2 br $__inlined_func$~lib/rt/itcms/__renew end local.get $6 - local.get $1 + local.get $2 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $9 local.set $3 local.get $6 - local.get $1 + local.get $2 i32.load offset=16 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 local.get $6 i32.gt_u select - local.set $7 + local.set $8 block $~lib/util/memory/memmove|inlined.0 local.get $3 - local.get $2 - local.tee $1 + local.tee $2 + local.get $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 local.get $1 - local.get $3 + local.get $2 i32.sub - local.get $7 + local.get $8 i32.sub i32.const 0 - local.get $7 + local.get $8 i32.const 1 i32.shl i32.sub i32.le_u if - local.get $3 + local.get $2 local.get $1 - local.get $7 + local.get $8 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end local.get $1 - local.get $3 + local.get $2 i32.gt_u if local.get $1 i32.const 7 i32.and - local.get $3 + local.get $2 i32.const 7 i32.and i32.eq if loop $while-continue|0 - local.get $3 + local.get $2 i32.const 7 i32.and if - local.get $7 + local.get $8 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 - local.get $3 + local.set $8 + local.get $2 local.tee $5 i32.const 1 i32.add - local.set $3 + local.set $2 local.get $1 local.tee $4 i32.const 1 @@ -2907,22 +2787,22 @@ end end loop $while-continue|1 - local.get $7 + local.get $8 i32.const 8 i32.ge_u if - local.get $3 + local.get $2 local.get $1 i64.load i64.store - local.get $7 + local.get $8 i32.const 8 i32.sub - local.set $7 - local.get $3 + local.set $8 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2932,13 +2812,13 @@ end end loop $while-continue|2 - local.get $7 + local.get $8 if - local.get $3 + local.get $2 local.tee $5 i32.const 1 i32.add - local.set $3 + local.set $2 local.get $1 local.tee $4 i32.const 1 @@ -2948,10 +2828,10 @@ local.get $4 i32.load8_u i32.store8 - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 + local.set $8 br $while-continue|2 end end @@ -2959,29 +2839,29 @@ local.get $1 i32.const 7 i32.and - local.get $3 + local.get $2 i32.const 7 i32.and i32.eq if loop $while-continue|3 - local.get $3 - local.get $7 + local.get $2 + local.get $8 i32.add i32.const 7 i32.and if - local.get $7 + local.get $8 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $7 + local.get $8 i32.const 1 i32.sub - local.tee $7 + local.tee $8 + local.get $2 i32.add local.get $1 - local.get $7 + local.get $8 i32.add i32.load8_u i32.store8 @@ -2989,18 +2869,18 @@ end end loop $while-continue|4 - local.get $7 + local.get $8 i32.const 8 i32.ge_u if - local.get $3 - local.get $7 + local.get $8 i32.const 8 i32.sub - local.tee $7 + local.tee $8 + local.get $2 i32.add local.get $1 - local.get $7 + local.get $8 i32.add i64.load i64.store @@ -3009,16 +2889,16 @@ end end loop $while-continue|5 - local.get $7 + local.get $8 if - local.get $3 - local.get $7 + local.get $8 i32.const 1 i32.sub - local.tee $7 + local.tee $8 + local.get $2 i32.add local.get $1 - local.get $7 + local.get $8 i32.add i32.load8_u i32.store8 @@ -3027,17 +2907,11 @@ end end end - local.get $9 + local.get $3 + local.set $1 end - local.tee $1 - local.get $8 - i32.add - local.get $6 - local.get $8 - i32.sub - call $~lib/memory/memory.fill local.get $1 - local.get $2 + local.get $7 i32.ne if local.get $0 @@ -3046,9 +2920,12 @@ local.get $0 local.get $1 i32.store offset=4 - 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 end local.get $0 local.get $6 @@ -3068,7 +2945,7 @@ if i32.const 1248 i32.const 1728 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -3105,7 +2982,7 @@ if i32.const 1248 i32.const 1728 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -3139,7 +3016,7 @@ if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3187,7 +3064,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 @@ -3195,7 +3072,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,13 +3080,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 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -3217,19 +3094,19 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load local.tee $8 i32.store local.get $2 - local.get $7 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 @@ -3265,7 +3142,7 @@ i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -3278,30 +3155,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 12 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 @@ -3331,23 +3214,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 @@ -3406,14 +3289,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 +3316,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -3444,9 +3327,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 +3341,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,1369 +3375,1889 @@ (local $14 i32) (local $15 i32) (local $16 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $17 i32) + (local $18 i32) + (local $19 i32) block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i64.const 0 - i64.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 - i32.const 4 + i32.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-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 0 - i32.store - local.get $5 - i32.const 24 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - local.get $5 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 - i32.const 3 - i32.store offset=4 - local.get $5 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store offset=8 - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 - i32.const 4 - i32.store offset=12 - local.get $5 - i32.const 0 - i32.store offset=16 - local.get $5 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i32.store - loop $for-loop|1 - local.get $2 - 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 + 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 $5 - i32.load - local.get $5 - i32.load offset=4 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.extend8_s - 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 - loop $while-continue|0 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $2 - i32.const 255 + 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 - i32.eq + 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.const -2 + i32.and + local.set $6 + br $while-continue|0 end - br_if $__inlined_func$~lib/map/Map#find - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|0 end + i32.const 0 + local.set $6 end - i32.const 0 - local.set $4 - end - local.get $4 - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - local.get $2 - i32.extend8_s - 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 - loop $while-continue|02 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $2 - i32.const 255 + 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 - i32.eq + 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.const -2 + i32.and + local.set $6 + br $while-continue|02 end - br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|02 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - 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 $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 end - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 local.get $2 - i32.extend8_s + i32.load offset=20 i32.const 100 - i32.lt_s + i32.ne if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 + 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 $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 - loop $while-continue|05 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $2 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|05 - end - end - i32.const 0 - local.set $4 - end - local.get $4 - 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 $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - 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 $5 - local.get $2 - local.get $2 - i32.extend8_s - 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 - loop $while-continue|08 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $2 - i32.const 255 + 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 - i32.eq + 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.const -2 + i32.and + local.set $6 + br $while-continue|05 end - br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|08 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - 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 $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 end - end - local.get $5 - 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-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $5 - i32.load offset=8 - local.set $11 - local.get $5 - i32.load offset=16 - local.tee $12 - local.set $4 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 65 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $8 - call $~lib/memory/memory.fill - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - local.get $8 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $2 - i32.store - loop $for-loop|0 + 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 - local.get $12 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 i32.lt_s + br_if $folding-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 + i32.const 1073741820 + i32.gt_u if - local.get $7 - i32.const 12 - i32.mul - local.get $11 - i32.add - local.tee $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $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 $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 $2 - local.get $1 - local.get $4 - i32.load8_s - call $~lib/array/Array#__set - local.get $1 + 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 $1 + 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 $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - end - local.get $2 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/array/ensureCapacity - 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 $2 - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - 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-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i32.const 0 - i32.store - local.get $4 - i32.const 24 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 3 - i32.store offset=4 - local.get $4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store offset=8 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 4 - i32.store offset=12 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $11 - i32.store offset=16 - loop $for-loop|4 - local.get $1 - i32.load offset=12 - local.get $6 - i32.gt_s + 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 $1 + 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 $6 - i32.le_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 $1 - i32.load offset=4 - i32.add - i32.load8_s - 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.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#find10 - loop $while-continue|011 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $2 - i32.const 255 + 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 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $8 + i32.load offset=4 + i32.add + i32.load8_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.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 $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#find10 + 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 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 - i32.const -2 - i32.and - local.set $0 - br $while-continue|011 + 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.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 - 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 31 - i32.const 5 - 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.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#find13 - loop $while-continue|014 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u + 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.const 255 + i32.load offset=4 + local.tee $0 + i32.const 1 i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find13 - local.get $8 - i32.const -2 - i32.and - local.set $0 - br $while-continue|014 - end - end - i32.const 0 - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $4 - i32.load - local.get $2 - 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 $7 - i32.const 15 - i32.shr_u - local.get $7 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $7 - i32.const 13 - i32.shr_u - local.get $7 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $7 - i32.const 16 - i32.shr_u - local.get $7 - i32.xor - local.tee $14 - local.get $4 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 - local.get $7 - if - local.get $7 - i32.load offset=4 - local.tee $8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $7 - i32.load8_u + 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.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 $8 - i32.const -2 - i32.and - local.set $7 - br $while-continue|015 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $7 - end - local.get $7 - if - local.get $7 - local.get $2 - i32.store8 offset=1 - else - local.get $4 - i32.load offset=16 - local.get $4 - i32.load offset=12 - i32.eq + local.get $3 if - local.get $4 - i32.load offset=20 - local.get $4 + 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.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) + 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 + 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=4 - else + i32.load offset=8 + local.tee $19 local.get $4 - i32.load offset=4 - i32.const 1 + i32.load offset=16 + i32.const 3 i32.shl - i32.const 1 - i32.or + 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_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 $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 $7 - global.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.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 $7 i32.const 1 i32.add - local.tee $0 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 - 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 $15 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor + local.get $3 + i32.add local.tee $3 - i32.store offset=4 - local.get $4 - i32.load offset=8 - local.tee $8 - local.get $4 - i32.load offset=16 - i32.const 3 - i32.shl + 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 - local.set $16 + i32.store offset=20 local.get $3 - local.set $0 - loop $while-continue|016 - local.get $8 - local.get $16 - i32.ne - if - local.get $8 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $8 - i32.load8_s - local.tee $9 - i32.store8 - local.get $0 - local.get $8 - i32.load8_s offset=1 - i32.store8 offset=1 - local.get $0 - local.get $9 - 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 $9 - i32.const 15 - i32.shr_u - local.get $9 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - i32.const 13 - i32.shr_u - local.get $9 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - i32.const 16 - i32.shr_u - local.get $9 - i32.xor - local.get $7 - i32.and - i32.const 2 - i32.shl - local.get $10 - i32.add - local.tee $9 - i32.load - i32.store offset=4 - local.get $9 - local.get $0 - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $8 - i32.const 8 - i32.add - local.set $8 - br $while-continue|016 - end - end - local.get $4 - local.get $10 - i32.store - local.get $4 - local.get $10 - call $~lib/rt/itcms/__link - local.get $4 - local.get $7 + 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 $4 - local.get $3 - i32.store offset=8 - local.get $4 + local.get $0 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 - local.get $15 - i32.store offset=12 - local.get $4 - local.get $4 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.store end global.get $~lib/memory/__stack_pointer - local.get $4 - i32.load offset=8 - local.tee $0 - i32.store - local.get $4 - local.get $4 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - 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 $2 - i32.store8 local.get $0 - local.get $2 - i32.store8 offset=1 - local.get $4 - local.get $4 - i32.load offset=20 + call $~lib/map/Map#set + local.get $6 i32.const 1 i32.add - i32.store offset=20 - local.get $0 - local.get $4 + 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.extend8_s + i32.const 50 + i32.lt_s + if + local.get $9 i32.load - local.get $4 + local.get $9 i32.load offset=4 - local.get $14 + 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 - local.tee $2 i32.load - i32.store offset=4 + 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.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.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 - local.get $0 - i32.store + 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 + 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 + end + i32.const 0 + local.set $3 + end + 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 - i32.const 20 - i32.sub - local.tee $2 - local.get $2 - call $~lib/map/Map#set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|4 end - end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $11 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $6 - loop $for-loop|6 - local.get $6 - i32.extend8_s + local.get $9 + i32.load offset=20 i32.const 50 - i32.lt_s + i32.ne if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 + 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.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 $2 - block $__inlined_func$~lib/map/Map#find18 - loop $while-continue|019 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + 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 + 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 $6 - 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#find18 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|019 end + i32.const 0 + local.set $3 end + 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 + 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 + end + i32.const 0 + local.set $3 + end + local.get $3 i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $6 - call $~lib/map/Map#get - local.get $6 - i32.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 + 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 $5 - local.get $6 - call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 + 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 + end + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + if + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $4 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + i32.load8_u + local.tee $8 + i32.store8 + local.get $2 + local.get $4 i32.load offset=4 - local.get $6 - i32.extend8_s + i32.store offset=4 + local.get $2 + local.get $8 i32.const -1028477379 i32.mul i32.const 374761394 @@ -4857,668 +5266,206 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $8 + local.get $8 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $8 + local.get $8 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $8 + local.get $8 i32.const 16 i32.shr_u - local.get $2 i32.xor + local.get $1 i32.and i32.const 2 i32.shl + local.get $5 i32.add + local.tee $8 i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find21 - loop $while-continue|022 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $6 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find21 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|022 - end - end - i32.const 0 - local.set $2 - end + i32.store offset=8 + local.get $8 local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 + i32.store + local.get $2 + i32.const 12 i32.add - local.set $6 - br $for-loop|6 + local.set $2 end + local.get $4 + i32.const 12 + i32.add + local.set $4 + br $while-continue|0 end + end + local.get $0 + local.get $5 + i32.store + local.get $5 + if + local.get $0 local.get $5 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $6 - loop $for-loop|8 - local.get $6 - i32.extend8_s - i32.const 50 - i32.lt_s + 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 $3 + 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 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + 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 $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $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 $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.get $0 + local.tee $1 + i32.load offset=8 + local.tee $0 + i32.const 1 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 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $6 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find24 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|025 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - if + if (result i32) i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable + else + local.get $1 + i32.load8_u + local.get $2 + i32.const 255 + i32.and + i32.eq end - local.get $5 - local.get $6 - local.get $6 - i32.extend8_s - 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 - loop $while-continue|028 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $6 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find27 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|028 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $6 - call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $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 $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 + br_if $__inlined_func$~lib/map/Map#find + local.get $0 + i32.const -2 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 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $6 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find30 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|031 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|8 + local.set $0 + br $while-continue|0 end end - local.get $5 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/map/Map#clear - local.get $5 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 0 + local.set $1 end - i32.const 18432 - i32.const 18480 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s + local.get $1 + i32.eqz if - i32.const 18432 - i32.const 18480 - i32.const 1 - i32.const 1 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $5 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 + i32.load offset=4 + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - i32.load offset=8 - local.tee $7 + i32.load local.get $0 - i32.load offset=16 - i32.const 12 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 255 + i32.and + i32.const -1028477379 i32.mul - i32.add - local.set $4 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne - if - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $7 - i32.load8_u - local.tee $8 - i32.store8 - local.get $2 - local.get $7 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $8 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $8 - local.get $8 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $8 - local.get $8 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $8 - local.get $8 - i32.const 16 - i32.shr_u - i32.xor - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $6 - i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $7 - i32.const 12 - i32.add - local.set $7 - br $while-continue|0 - end - end - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - local.get $0 - local.get $5 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 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 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 + i32.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 + 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 @@ -5577,14 +5524,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 +5551,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -5626,1764 +5573,1821 @@ (local $14 i32) (local $15 i32) (local $16 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $17 i32) + (local $18 i32) + (local $19 i32) block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i64.const 0 - i64.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 - i32.const 4 + i32.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-inner1 - 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 $5 - i32.store - local.get $5 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 - i32.const 3 - i32.store offset=4 - local.get $5 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store offset=8 - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 - i32.const 4 - i32.store offset=12 - local.get $5 - i32.const 0 - i32.store offset=16 - local.get $5 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i32.store - loop $for-loop|1 + 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 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 + 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 $5 - i32.load - local.get $5 - i32.load offset=4 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 -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 - loop $while-continue|0 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $2 - i32.const 255 + i32.const 100 + i32.lt_u + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + 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 $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 - i32.eq + 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.const -2 + i32.and + local.set $6 + br $while-continue|0 end - br_if $__inlined_func$~lib/map/Map#find - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|0 end + i32.const 0 + local.set $6 end + 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 $2 + i32.load offset=4 + local.get $0 + 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 $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.const -2 + i32.and + local.set $6 + br $while-continue|02 + end + end + i32.const 0 + local.set $6 + end + local.get $6 i32.const 0 - local.set $4 - end - local.get $4 - if - i32.const 0 - i32.const 1568 - i32.const 6 - 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.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 - local.get $5 - 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 - loop $while-continue|02 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $2 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|02 - end - end - i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $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 $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $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 - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 + 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 -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 - loop $while-continue|05 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $2 - i32.const 255 + i32.const 100 + i32.lt_u + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + 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 $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 - i32.eq + 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.const -2 + i32.and + local.set $6 + br $while-continue|05 end - br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|05 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $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 $5 - 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 - loop $while-continue|08 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load8_u - local.get $2 - i32.const 255 + 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 $2 + i32.load offset=4 + local.get $0 + 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 $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 - i32.eq + 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 - br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|08 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $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 + 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 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 end - end - local.get $5 - 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-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $5 - i32.load offset=8 - local.set $11 - local.get $5 - i32.load offset=16 - local.tee $12 - local.set $4 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i32.const 16 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 65 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $8 - call $~lib/memory/memory.fill - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - local.get $8 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $2 - i32.store - loop $for-loop|0 + 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 - local.get $12 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 i32.lt_s + br_if $folding-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 - local.get $7 - i32.const 12 - i32.mul - local.get $11 - i32.add - local.tee $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $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 $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 $2 - local.get $1 - local.get $4 - i32.load8_u - call $~lib/array/Array#__set - local.get $1 + 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 $1 + 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 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 + if local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - end - local.get $2 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/array/ensureCapacity - 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 $2 - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - 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-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i32.const 0 - i32.store - local.get $4 - i32.const 24 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 3 - i32.store offset=4 - local.get $4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store offset=8 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 4 - i32.store offset=12 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $11 - i32.store offset=16 - loop $for-loop|4 - local.get $1 - i32.load offset=12 - local.get $6 - i32.gt_s + 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 $1 + 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 $6 - i32.le_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 $1 - 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 - loop $while-continue|011 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $2 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 - i32.const -2 - i32.and - local.set $0 - br $while-continue|011 - end - end - i32.const 0 - local.set $0 - end - local.get $0 - i32.eqz + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - 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 - loop $while-continue|014 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u + 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 114 + 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 $9 + i32.load offset=4 + local.get $2 + local.tee $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 $3 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $3 + if local.get $3 - i32.const 255 + 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#find13 - local.get $8 - i32.const -2 - i32.and - local.set $0 - br $while-continue|014 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-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $4 - i32.load - local.get $2 - local.tee $0 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $7 - i32.const 15 - i32.shr_u - local.get $7 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $7 - i32.const 13 - i32.shr_u - local.get $7 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $7 - i32.const 16 - i32.shr_u - local.get $7 - i32.xor - local.tee $14 - local.get $4 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 - local.get $7 - if - local.get $7 - i32.load offset=4 - local.tee $8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $7 - i32.load8_u + 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.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 $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.const 255 + 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 $8 - i32.const -2 - i32.and - local.set $7 - br $while-continue|015 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - local.set $7 - end - local.get $7 - 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.store + local.get $2 + local.set $5 local.get $7 + local.tee $1 + i32.load local.get $2 - i32.store8 offset=1 - else - local.get $4 - i32.load offset=16 - local.get $4 - i32.load offset=12 - i32.eq - if - local.get $4 - i32.load offset=20 - local.get $4 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $4 - i32.load offset=4 - else - local.get $4 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $7 - global.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 $7 - i32.const 1 - i32.add - local.tee $0 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 - 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 $8 - local.get $4 - 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 - i32.ne + 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 $8 + local.get $3 i32.load offset=4 + local.tee $0 i32.const 1 i32.and - i32.eqz - if - local.get $0 - local.get $8 + if (result i32) + i32.const 0 + else + local.get $3 i32.load8_u - local.tee $9 - i32.store8 - local.get $0 - local.get $8 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - local.get $9 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $9 - i32.const 15 - i32.shr_u - local.get $9 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - i32.const 13 - i32.shr_u - local.get $9 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - i32.const 16 - i32.shr_u - local.get $9 - i32.xor - local.get $7 + local.get $5 + i32.const 255 i32.and - i32.const 2 - i32.shl - local.get $10 - i32.add - local.tee $9 - i32.load - i32.store offset=4 - local.get $9 - local.get $0 - i32.store - local.get $0 + 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 + end + 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 $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 + 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 $0 + local.set $19 + br $while-continue|00 end - local.get $8 - i32.const 8 - i32.add - local.set $8 - br $while-continue|016 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 $4 - local.get $10 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $3 i32.store - local.get $4 - local.get $10 - call $~lib/rt/itcms/__link - local.get $4 - local.get $7 - i32.store offset=4 - local.get $4 + 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.store offset=8 - local.get $4 + i32.add + local.tee $3 + local.get $2 + i32.store8 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 - local.get $15 - i32.store offset=12 - local.get $4 - local.get $4 + 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 $4 - i32.load offset=8 - local.tee $0 - i32.store - local.get $4 - local.get $4 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - 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 $2 - i32.store8 local.get $0 - local.get $2 - i32.store8 offset=1 - local.get $4 - local.get $4 - i32.load offset=20 + call $~lib/map/Map#set + local.get $6 i32.const 1 i32.add - i32.store offset=20 - local.get $0 - local.get $4 + 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.const 255 + i32.and + i32.const 50 + i32.lt_u + if + local.get $9 i32.load - local.get $4 + local.get $9 i32.load offset=4 - local.get $14 + local.get $1 + local.tee $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 $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 $11 - local.get $12 - i32.const 20 - i32.sub - local.tee $2 - local.get $2 - call $~lib/map/Map#set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|4 - end - end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $11 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $6 - loop $for-loop|6 - local.get $6 - 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 - loop $while-continue|019 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - 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 $6 - 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 - local.get $0 - 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 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $6 - call $~lib/map/Map#get - local.get $6 - i32.const 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 $5 - local.get $6 - 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 - loop $while-continue|022 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - 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 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 $9 + i32.load offset=4 + local.get $1 + local.tee $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 $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 + 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 $6 - 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 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|022 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $2 - end - local.get $2 - 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 $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|6 end - end - local.get $5 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $6 - loop $for-loop|8 - local.get $6 - i32.const 255 - i32.and + local.get $9 + i32.load offset=20 i32.const 50 - i32.lt_u + i32.ne if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 + 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 -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 - loop $while-continue|025 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $6 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find24 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|025 - end - end - i32.const 0 - local.set $2 - end - local.get $2 + i32.const 50 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $6 - local.get $6 - i32.const 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 - loop $while-continue|028 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $1 + local.tee $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 $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 + 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 $6 - 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#find27 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|028 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $6 - call $~lib/map/Map#delete - local.get $5 - 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 - loop $while-continue|031 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + 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 $9 + i32.load offset=4 + local.get $1 + local.tee $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 $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 + 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 $6 - 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#find30 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|031 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - local.set $2 - end - local.get $2 - 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.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 $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 $6 - i32.const 1 - i32.add - local.set $6 - 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 $5 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/map/Map#clear - local.get $5 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return end i32.const 18432 i32.const 18480 @@ -7427,7 +7431,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 @@ -7435,7 +7439,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,13 +7447,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 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -7457,19 +7461,19 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=8 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 local.get $2 - local.get $7 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 @@ -7506,7 +7510,7 @@ i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -7519,30 +7523,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 12 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 @@ -7560,6 +7570,7 @@ local.get $0 i32.load offset=4 local.get $1 + local.tee $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -7570,23 +7581,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 @@ -7599,22 +7610,23 @@ local.get $0 if 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 - local.get $2 + local.get $0 i32.const -2 i32.and local.set $0 @@ -7622,9 +7634,9 @@ end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.eqz if i32.const 1616 @@ -7634,7 +7646,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) @@ -7650,7 +7662,7 @@ if i32.const 1248 i32.const 1728 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -7695,23 +7707,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 @@ -7770,14 +7782,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 +7809,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -7819,1753 +7831,1803 @@ (local $14 i32) (local $15 i32) (local $16 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $17 i32) + (local $18 i32) + (local $19 i32) block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i64.const 0 - i64.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 - i32.const 4 + i32.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-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 0 - i32.store - local.get $5 - i32.const 24 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - local.get $5 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 - i32.const 3 - i32.store offset=4 - local.get $5 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store offset=8 - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 - i32.const 4 - i32.store offset=12 - local.get $5 - i32.const 0 - i32.store offset=16 - local.get $5 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i32.store - loop $for-loop|1 - local.get $2 - 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 + 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 $5 - i32.load - local.get $5 - i32.load offset=4 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.extend16_s - 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 - loop $while-continue|0 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $2 - i32.const 65535 + 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 - i32.eq + 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.const -2 + i32.and + local.set $6 + br $while-continue|0 end - br_if $__inlined_func$~lib/map/Map#find - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|0 end + i32.const 0 + local.set $6 end - i32.const 0 - local.set $4 - end - local.get $4 - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - local.get $2 - i32.extend16_s - 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 - loop $while-continue|02 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $2 - i32.const 65535 + 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 - i32.eq + 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.const -2 + i32.and + local.set $6 + br $while-continue|02 end - br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|02 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - 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 $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 end - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 local.get $2 - i32.extend16_s + i32.load offset=20 i32.const 100 - i32.lt_s + i32.ne if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 + 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 $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 - loop $while-continue|05 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $2 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|05 - end - end - i32.const 0 - local.set $4 - end - local.get $4 - 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 $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.extend16_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 $5 - local.get $2 - local.get $2 - i32.extend16_s - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find7 - loop $while-continue|08 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $2 - i32.const 65535 + 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 - i32.eq + 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.const -2 + i32.and + local.set $6 + br $while-continue|05 end - br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|08 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - call $~lib/map/Map#get - local.get $2 - 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 $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 - end - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - 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-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $5 - i32.load offset=8 - local.set $11 - local.get $5 - i32.load offset=16 - local.tee $12 - local.set $4 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i32.const 16 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 65 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - i32.const 1 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $8 - call $~lib/memory/memory.fill - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - local.get $8 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $2 - i32.store - loop $for-loop|0 - local.get $7 - local.get $12 - i32.lt_s - if - local.get $7 - i32.const 12 - i32.mul - local.get $11 - i32.add - local.tee $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - 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 $1 - local.get $4 - i32.load16_s - call $~lib/array/Array#__set - local.get $1 - i32.const 1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.extend16_s + i32.const 10 i32.add - local.set $1 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $2 - local.get $1 - i32.const 1 - i32.const 0 - call $~lib/array/ensureCapacity - 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 $2 - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - 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-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i32.const 0 - i32.store - local.get $4 - i32.const 24 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 3 - i32.store offset=4 - local.get $4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store offset=8 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 4 - i32.store offset=12 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $11 - i32.store offset=16 - loop $for-loop|4 - local.get $1 - i32.load offset=12 - local.get $6 - i32.gt_s - if - local.get $1 - i32.load offset=12 - local.get $6 - i32.le_u - if - i32.const 1248 - i32.const 1728 - i32.const 107 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_s - 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.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#find10 - loop $while-continue|011 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $2 - i32.const 65535 + 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 - i32.eq + 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 - br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 - i32.const -2 - i32.and - local.set $0 - br $while-continue|011 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.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 $0 + br $for-loop|3 end + end + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 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 + 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.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + 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 $8 + local.get $0 + i32.store + local.get $0 + if + local.get $8 local.get $0 - i32.eqz + 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 0 - i32.const 1568 - i32.const 31 - i32.const 5 - 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 $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $12 - i32.const 20 - i32.sub - 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 $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 + 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.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u + 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.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 - if - local.get $0 - i32.load offset=8 - local.tee $8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u + 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 114 + 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.const 65535 + 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#find13 - local.get $8 - i32.const -2 - i32.and - local.set $0 - br $while-continue|014 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-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $4 - i32.load - 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 $7 - i32.const 15 - i32.shr_u - local.get $7 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $7 - i32.const 13 - i32.shr_u - local.get $7 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $7 - i32.const 16 - i32.shr_u - local.get $7 - i32.xor - local.tee $14 - local.get $4 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 - local.get $7 - if - local.get $7 - i32.load offset=4 - local.tee $8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $7 - i32.load16_u + 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.const 65535 + 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 $8 - i32.const -2 - i32.and - local.set $7 - br $while-continue|015 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - local.set $7 - end - local.get $7 - 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.store + local.get $2 + local.set $5 local.get $7 + local.tee $1 + i32.load local.get $2 - i32.store16 offset=2 - else - local.get $4 - i32.load offset=16 - local.get $4 - i32.load offset=12 - i32.eq - if - local.get $4 - i32.load offset=20 - local.get $4 + i32.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.const -2 + i32.and + local.set $3 + br $while-continue|015 + end + end + i32.const 0 + local.set $3 + end + 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.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) + 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 + 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=4 - else + i32.load offset=8 + local.tee $19 local.get $4 - i32.load offset=4 - i32.const 1 + i32.load offset=16 + i32.const 3 i32.shl - i32.const 1 - i32.or + 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 $7 - global.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.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 $7 i32.const 1 i32.add - local.tee $0 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 - 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 $15 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor + local.get $3 + i32.add local.tee $3 - i32.store offset=4 - local.get $4 - i32.load offset=8 - local.tee $8 - local.get $4 - i32.load offset=16 - i32.const 3 - i32.shl + 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 - local.set $16 + i32.store offset=20 local.get $3 - local.set $0 - loop $while-continue|016 - local.get $8 - local.get $16 - i32.ne - if - local.get $8 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $8 - i32.load16_s - local.tee $9 - i32.store16 - local.get $0 - local.get $8 - i32.load16_s offset=2 - i32.store16 offset=2 - local.get $0 - local.get $9 - 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 $9 - i32.const 15 - i32.shr_u - local.get $9 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - i32.const 13 - i32.shr_u - local.get $9 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - i32.const 16 - i32.shr_u - local.get $9 - i32.xor - local.get $7 - i32.and - i32.const 2 - i32.shl - local.get $10 - i32.add - local.tee $9 - i32.load - i32.store offset=4 - local.get $9 - local.get $0 - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $8 - i32.const 8 - i32.add - local.set $8 - br $while-continue|016 - end - end - local.get $4 - local.get $10 - i32.store - local.get $4 - local.get $10 - call $~lib/rt/itcms/__link - local.get $4 - local.get $7 + 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 $4 - local.get $3 - i32.store offset=8 - local.get $4 + local.get $0 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 - local.get $15 - i32.store offset=12 - local.get $4 - local.get $4 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.store end global.get $~lib/memory/__stack_pointer - local.get $4 - i32.load offset=8 - local.tee $0 - i32.store - local.get $4 - local.get $4 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - 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 $2 - i32.store16 - local.get $0 - local.get $2 - i32.store16 offset=2 - local.get $4 - local.get $4 - i32.load offset=20 + local.get $0 + call $~lib/map/Map#set + local.get $6 i32.const 1 i32.add - i32.store offset=20 - local.get $0 - local.get $4 + 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 $4 + local.get $9 i32.load offset=4 - local.get $14 + 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 $11 - local.get $12 - i32.const 20 - i32.sub - local.tee $2 - local.get $2 - call $~lib/map/Map#set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|4 - end - end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $11 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $6 - loop $for-loop|6 - local.get $6 - i32.extend16_s - i32.const 50 - i32.lt_s - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $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 $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 - loop $while-continue|019 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load16_u - local.get $6 - i32.const 65535 + 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 - end - br_if $__inlined_func$~lib/map/Map#find18 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|019 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $6 - call $~lib/map/Map#get - local.get $6 - i32.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 $5 - local.get $6 - call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $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 $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 - loop $while-continue|022 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + 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 $6 - 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#find21 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|022 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|6 - end - end - local.get $5 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $6 - loop $for-loop|8 - local.get $6 - i32.extend16_s - i32.const 50 - i32.lt_s - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $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 $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 - loop $while-continue|025 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - 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 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.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.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#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 $6 - 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#find24 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|025 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $2 - end - local.get $2 - 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 $5 - local.get $6 - local.get $6 + 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.extend16_s - 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 - loop $while-continue|028 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + 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 + 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 $6 - 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#find27 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|028 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $6 - call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $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 $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 - loop $while-continue|031 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + 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 + 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 $6 - 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#find30 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|031 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - local.set $2 - end - local.get $2 - 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.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 + 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 + 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 $6 - i32.const 1 - i32.add - local.set $6 - 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 $5 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/map/Map#clear - local.get $5 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return end i32.const 18432 i32.const 18480 @@ -9609,7 +9671,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 @@ -9617,7 +9679,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,13 +9687,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 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -9639,19 +9701,19 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=8 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 $7 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 @@ -9687,7 +9749,7 @@ i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -9700,30 +9762,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 12 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 @@ -9741,6 +9809,7 @@ local.get $0 i32.load offset=4 local.get $1 + local.tee $2 i32.const 65535 i32.and i32.const -1028477379 @@ -9752,23 +9821,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 @@ -9781,22 +9850,23 @@ local.get $0 if 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 - local.get $2 + local.get $0 i32.const -2 i32.and local.set $0 @@ -9804,9 +9874,9 @@ end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.eqz if i32.const 1616 @@ -9816,7 +9886,7 @@ 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) @@ -9839,23 +9909,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 @@ -9914,14 +9984,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 +10011,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -9963,1768 +10033,1825 @@ (local $14 i32) (local $15 i32) (local $16 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $17 i32) + (local $18 i32) + (local $19 i32) block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i64.const 0 - i64.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 - i32.const 4 + i32.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-inner1 - 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 $5 - i32.store - local.get $5 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 - i32.const 3 - i32.store offset=4 - local.get $5 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store offset=8 - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 - i32.const 4 - i32.store offset=12 - local.get $5 - i32.const 0 - i32.store offset=16 - local.get $5 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i32.store - loop $for-loop|1 + 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 65535 - i32.and - i32.const 100 - i32.lt_u + 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 $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 - loop $while-continue|0 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $2 - i32.const 65535 + 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 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 + 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#find + loop $while-continue|0 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 i32.and - i32.eq + 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.const -2 + i32.and + local.set $6 + br $while-continue|0 end - br_if $__inlined_func$~lib/map/Map#find - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|0 end + i32.const 0 + local.set $6 end - i32.const 0 - local.set $4 - end - local.get $4 - if - i32.const 0 - i32.const 1568 - i32.const 6 - 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 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 - loop $while-continue|02 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $2 - i32.const 65535 + 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 $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#find1 + loop $while-continue|02 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 i32.and - i32.eq + 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.const -2 + i32.and + local.set $6 + br $while-continue|02 end - br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|02 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $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 $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 + 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 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 $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end local.get $2 - i32.const 65535 - i32.and + i32.load offset=20 i32.const 100 - i32.lt_u + i32.ne if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 + 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 -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 - loop $while-continue|05 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $2 - i32.const 65535 + i32.const 100 + i32.lt_u + if + 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#find4 + loop $while-continue|05 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 i32.and - i32.eq + 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.const -2 + i32.and + local.set $6 + br $while-continue|05 end - br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|05 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 + 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 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.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - 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.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 $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find7 - loop $while-continue|08 - local.get $4 - if - local.get $4 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $4 - i32.load16_u - local.get $2 - i32.const 65535 + 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 - i32.eq + 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 - br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 - i32.const -2 - i32.and - local.set $4 - br $while-continue|08 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - local.set $4 - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $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 + 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 $0 + br $for-loop|3 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 end - end - local.get $5 - 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-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $5 - i32.load offset=8 - local.set $11 - local.get $5 - i32.load offset=16 - local.tee $12 - local.set $4 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i32.const 16 - i32.const 15 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 65 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - i32.const 1 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $8 - call $~lib/memory/memory.fill - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - local.get $8 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $2 - i32.store - loop $for-loop|0 + 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 - local.get $12 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + 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 $7 - i32.const 12 - i32.mul - local.get $11 - i32.add - local.tee $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $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 $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 $2 - local.get $1 - local.get $4 - i32.load16_u - call $~lib/array/Array#__set - local.get $1 + 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 $1 + local.set $19 + br $for-loop|0 end + 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 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - end - local.get $2 - local.get $1 - i32.const 1 - i32.const 0 - call $~lib/array/ensureCapacity - 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 $2 - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - 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-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i32.const 0 - i32.store - local.get $4 - i32.const 24 - i32.const 16 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 3 - i32.store offset=4 - local.get $4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 - i32.store offset=8 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 4 - i32.store offset=12 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $11 - i32.store offset=16 - loop $for-loop|4 - local.get $1 - i32.load offset=12 - local.get $6 - i32.gt_s + 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 $1 + 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 $6 - i32.le_u - if - i32.const 1248 - i32.const 1728 - i32.const 107 - i32.const 42 - call $~lib/builtins/abort - unreachable - end local.get $1 - i32.load offset=4 - local.get $6 - 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 - loop $while-continue|011 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $2 - i32.const 65535 + 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 114 + 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 $9 + i32.load offset=4 + local.get $2 + local.tee $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 $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#find10 - local.get $3 - i32.const -2 - i32.and - local.set $0 - br $while-continue|011 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 $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 - loop $while-continue|014 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u + 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.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 $3 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $3 + if local.get $3 - i32.const 65535 + i32.load offset=8 + 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 $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 - br_if $__inlined_func$~lib/map/Map#find13 - local.get $8 - i32.const -2 - i32.and - local.set $0 - br $while-continue|014 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-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $4 - i32.load - local.get $2 - local.tee $0 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $7 - i32.const 15 - i32.shr_u - local.get $7 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $7 - i32.const 13 - i32.shr_u - local.get $7 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $7 - i32.const 16 - i32.shr_u - local.get $7 - i32.xor - local.tee $14 - local.get $4 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 - local.get $7 - if - local.get $7 - i32.load offset=4 - local.tee $8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $7 - i32.load16_u + 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.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.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 $8 - i32.const -2 - i32.and - local.set $7 - br $while-continue|015 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $7 - end - local.get $7 - if - local.get $7 - local.get $2 - i32.store16 offset=2 - else - local.get $4 - i32.load offset=16 - local.get $4 - i32.load offset=12 - i32.eq + local.get $3 if - local.get $4 - i32.load offset=20 - local.get $4 + 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) + 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 + 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=4 - else + i32.load offset=8 + local.tee $19 local.get $4 - i32.load offset=4 - i32.const 1 + i32.load offset=16 + i32.const 3 i32.shl - i32.const 1 - i32.or - end - local.set $7 - global.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 $7 - i32.const 1 - i32.add - local.tee $0 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 - 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 $8 - local.get $4 - 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 - i32.ne - if - local.get $8 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz + 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 $8 - i32.load16_u - local.tee $9 - i32.store16 - local.get $0 - local.get $8 - i32.load16_u offset=2 - i32.store16 offset=2 - local.get $0 - local.get $9 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $9 - i32.const 15 - i32.shr_u - local.get $9 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - i32.const 13 - i32.shr_u - local.get $9 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - i32.const 16 - i32.shr_u - local.get $9 - i32.xor - local.get $7 + local.get $19 + i32.load offset=4 + i32.const 1 i32.and - i32.const 2 - i32.shl - local.get $10 - i32.add - local.tee $9 - i32.load - i32.store offset=4 - local.get $9 - local.get $0 - i32.store - local.get $0 + 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 $0 + local.set $19 + br $while-continue|00 end - local.get $8 - i32.const 8 - i32.add - local.set $8 - br $while-continue|016 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 $4 - local.get $10 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $3 i32.store - local.get $4 - local.get $10 - call $~lib/rt/itcms/__link - local.get $4 - local.get $7 - i32.store offset=4 - local.get $4 + 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.store offset=8 - local.get $4 + i32.add + local.tee $3 + local.get $2 + i32.store16 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 - local.get $15 - i32.store offset=12 - local.get $4 - local.get $4 + 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 $4 - i32.load offset=8 - local.tee $0 - i32.store - local.get $4 - local.get $4 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - 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 $2 - i32.store16 local.get $0 - local.get $2 - i32.store16 offset=2 - local.get $4 - local.get $4 - i32.load offset=20 + call $~lib/map/Map#set + local.get $6 i32.const 1 i32.add - i32.store offset=20 - local.get $0 - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $14 - 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 $11 - local.get $12 - i32.const 20 - i32.sub - local.tee $2 - local.get $2 - call $~lib/map/Map#set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|4 end - end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $11 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $6 - loop $for-loop|6 - local.get $6 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u + local.get $7 + i32.load offset=20 + i32.const 100 + i32.ne 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 - loop $while-continue|019 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load16_u - local.get $6 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find18 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|019 - end - end - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $6 - call $~lib/map/Map#get - local.get $6 - i32.const 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 $5 - local.get $6 - 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.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 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find21 - loop $while-continue|022 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.const 50 + i32.lt_u + if + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $1 + local.tee $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 $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 + 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 $6 - 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#find21 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|022 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 $9 + i32.load offset=4 + local.get $1 + local.tee $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 $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 + 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 + local.set $3 + br $while-continue|021 + end + end + i32.const 0 + local.set $3 + end + 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 $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|6 end - end - local.get $5 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $6 - loop $for-loop|8 - local.get $6 - i32.const 65535 - i32.and + local.get $9 + i32.load offset=20 i32.const 50 - i32.lt_u + i32.ne if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 + 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 -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 - loop $while-continue|025 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.const 50 + i32.lt_u + if + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $1 + local.tee $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 $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 + 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 $6 - 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 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|025 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $2 - end - local.get $2 - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $6 - local.get $6 - i32.const 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 - loop $while-continue|028 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + 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 $9 + i32.load offset=4 + local.get $1 + local.tee $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 $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 + 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 $6 - 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 - local.get $0 - 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 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $6 - call $~lib/map/Map#delete - local.get $5 - 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 - loop $while-continue|031 - local.get $2 - if - local.get $2 - i32.load offset=8 - local.tee $0 - 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 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.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 $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 $6 - 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 - local.get $0 - i32.const -2 - i32.and - local.set $2 - br $while-continue|031 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $2 - end - local.get $2 - 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 $6 - i32.const 1 - i32.add - local.set $6 - 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 $5 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/map/Map#clear - local.get $5 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return end i32.const 18432 i32.const 18480 @@ -11740,6 +11867,7 @@ local.get $0 i32.load offset=4 local.get $1 + local.tee $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11749,23 +11877,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 @@ -11778,20 +11906,21 @@ local.get $0 if 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 - local.get $2 + local.get $0 i32.const -2 i32.and local.set $0 @@ -11799,9 +11928,9 @@ end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.eqz if i32.const 1616 @@ -11811,7 +11940,7 @@ 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) @@ -11832,23 +11961,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 @@ -11905,14 +12034,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 +12061,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -11958,29 +12087,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 $2 + local.tee $5 i32.store loop $for-loop|0 - local.get $0 + local.get $2 i32.const 100 i32.lt_s if - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11989,60 +12118,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $4 + local.get $4 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 $6 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $6 if - local.get $1 + local.get $6 i32.load offset=8 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $6 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $1 + local.set $6 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $6 end - local.get $1 + local.get $6 if i32.const 0 i32.const 1568 @@ -12051,17 +12180,17 @@ call $~lib/builtins/abort unreachable end + local.get $5 + local.get $2 local.get $2 - local.get $0 - local.get $0 i32.const 10 i32.add call $~lib/map/Map#set - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12070,60 +12199,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $4 + local.get $4 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 $6 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $1 + local.get $6 if - local.get $1 + local.get $6 i32.load offset=8 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $6 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $1 + local.set $6 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $6 end - local.get $1 + local.get $6 i32.eqz if i32.const 0 @@ -12133,10 +12262,10 @@ call $~lib/builtins/abort unreachable end + local.get $5 local.get $2 - local.get $0 call $~lib/map/Map#get - local.get $0 + local.get $2 i32.const 10 i32.add i32.ne @@ -12148,14 +12277,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 $5 i32.load offset=20 i32.const 100 i32.ne @@ -12168,17 +12297,17 @@ unreachable end i32.const 0 - 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 $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12187,60 +12316,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $4 + local.get $4 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 $6 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $1 + local.get $6 if - local.get $1 + local.get $6 i32.load offset=8 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $6 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $1 + local.set $6 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $6 end - local.get $1 + local.get $6 i32.eqz if i32.const 0 @@ -12250,10 +12379,10 @@ call $~lib/builtins/abort unreachable end + local.get $5 local.get $2 - local.get $0 call $~lib/map/Map#get - local.get $0 + local.get $2 i32.const 10 i32.add i32.ne @@ -12265,17 +12394,17 @@ call $~lib/builtins/abort unreachable end + local.get $5 + local.get $2 local.get $2 - local.get $0 - local.get $0 i32.const 20 i32.add call $~lib/map/Map#set - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12284,60 +12413,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $4 + local.get $4 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 $6 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $1 + local.get $6 if - local.get $1 + local.get $6 i32.load offset=8 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $6 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $5 + local.get $4 i32.const -2 i32.and - local.set $1 + local.set $6 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $6 end - local.get $1 + local.get $6 i32.eqz if i32.const 0 @@ -12347,10 +12476,10 @@ call $~lib/builtins/abort unreachable end + local.get $5 local.get $2 - local.get $0 call $~lib/map/Map#get - local.get $0 + local.get $2 i32.const 20 i32.add i32.ne @@ -12362,14 +12491,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 $5 i32.load offset=20 i32.const 100 i32.ne @@ -12382,10 +12511,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -12394,20 +12520,20 @@ 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 $5 i32.load offset=8 - local.set $5 - local.get $1 + local.set $7 local.get $2 + local.get $5 i32.load offset=16 local.tee $8 call $~lib/array/Array#constructor - local.tee $1 + local.tee $4 i32.store - loop $for-loop|01 + loop $for-loop|02 local.get $3 local.get $8 i32.lt_s @@ -12415,77 +12541,79 @@ local.get $3 i32.const 12 i32.mul - local.get $5 + local.get $7 i32.add - local.tee $6 + local.tee $9 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $1 - local.get $0 - local.get $6 - i32.load - call $~lib/array/Array#__set - local.get $0 + 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 $3 i32.const 1 i32.add local.set $3 - br $for-loop|01 + br $for-loop|02 end end + local.get $4 local.get $1 - local.get $0 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity + local.get $4 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 $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $5 call $~lib/map/Map#values - local.tee $9 + local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $7 + local.tee $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $5 + local.tee $3 i32.store offset=16 loop $for-loop|2 - local.get $1 - i32.load offset=12 local.get $4 + i32.load offset=12 + local.get $0 i32.gt_s if - local.get $1 local.get $4 + local.get $0 call $~lib/array/Array#__get - local.set $0 - local.get $9 - local.get $4 + local.set $7 + local.get $1 + local.get $0 call $~lib/array/Array#__get local.set $8 - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $0 + local.get $7 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12494,60 +12622,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $6 + local.get $6 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $6 + local.get $6 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $6 + local.get $6 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 $6 block $__inlined_func$~lib/map/Map#find10 loop $while-continue|011 - local.get $3 + local.get $6 if - local.get $3 + local.get $6 i32.load offset=8 - local.tee $6 + local.tee $9 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $7 + local.get $6 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find10 - local.get $6 + local.get $9 i32.const -2 i32.and - local.set $3 + local.set $6 br $while-continue|011 end end i32.const 0 - local.set $3 + local.set $6 end - local.get $3 + local.get $6 i32.eqz if i32.const 0 @@ -12557,14 +12685,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 local.get $8 i32.const 20 i32.sub - local.tee $6 + local.tee $9 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12573,36 +12701,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $6 + local.get $6 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $6 + local.get $6 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $6 + local.get $6 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 $6 block $__inlined_func$~lib/map/Map#find13 loop $while-continue|014 - local.get $3 + local.get $6 if - local.get $3 + local.get $6 i32.load offset=8 local.tee $10 i32.const 1 @@ -12610,8 +12738,8 @@ if (result i32) i32.const 0 else + local.get $9 local.get $6 - local.get $3 i32.load i32.eq end @@ -12619,14 +12747,14 @@ local.get $10 i32.const -2 i32.and - local.set $3 + local.set $6 br $while-continue|014 end end i32.const 0 - local.set $3 + local.set $6 end - local.get $3 + local.get $6 i32.eqz if i32.const 0 @@ -12636,25 +12764,25 @@ call $~lib/builtins/abort unreachable end + local.get $2 + local.get $7 local.get $7 - local.get $0 - local.get $0 call $~lib/map/Map#set - local.get $5 + 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 $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|2 end end - local.get $7 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -12666,7 +12794,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -12679,17 +12807,18 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|3 - local.get $4 + local.get $0 i32.const 50 i32.lt_s if - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $4 + local.get $0 + local.tee $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12699,23 +12828,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 @@ -12729,19 +12858,19 @@ if local.get $0 i32.load offset=8 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $1 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find16 - local.get $3 + local.get $2 i32.const -2 i32.and local.set $0 @@ -12761,10 +12890,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 + local.get $5 + local.get $1 call $~lib/map/Map#get - local.get $4 + local.get $1 i32.const 20 i32.add i32.ne @@ -12776,14 +12905,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 + local.get $5 + local.get $1 call $~lib/map/Map#delete - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12793,23 +12922,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 @@ -12823,19 +12952,19 @@ if local.get $0 i32.load offset=8 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $1 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find19 - local.get $3 + local.get $2 i32.const -2 i32.and local.set $0 @@ -12854,14 +12983,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|3 end end - local.get $2 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -12874,17 +13003,18 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|4 - local.get $4 + local.get $0 i32.const 50 i32.lt_s if - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $4 + local.get $0 + local.tee $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12894,23 +13024,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 @@ -12924,19 +13054,19 @@ if local.get $0 i32.load offset=8 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $1 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find22 - local.get $3 + local.get $2 i32.const -2 i32.and local.set $0 @@ -12955,17 +13085,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 - local.get $4 + local.get $5 + local.get $1 + local.get $1 i32.const 10 i32.add call $~lib/map/Map#set - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12975,23 +13105,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 @@ -13005,19 +13135,19 @@ if local.get $0 i32.load offset=8 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $1 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find25 - local.get $3 + local.get $2 i32.const -2 i32.and local.set $0 @@ -13037,14 +13167,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 + local.get $5 + local.get $1 call $~lib/map/Map#delete - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13054,23 +13184,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 @@ -13084,19 +13214,19 @@ if local.get $0 i32.load offset=8 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $1 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find28 - local.get $3 + local.get $2 i32.const -2 i32.and local.set $0 @@ -13115,14 +13245,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|4 end end - local.get $2 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -13134,9 +13264,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $5 call $~lib/map/Map#clear - local.get $2 + local.get $5 i32.load offset=20 if i32.const 0 @@ -13194,7 +13324,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 @@ -13202,7 +13332,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,13 +13340,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 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -13224,19 +13354,19 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load local.tee $8 i32.store local.get $2 - local.get $7 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 @@ -13272,7 +13402,7 @@ i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -13285,30 +13415,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 12 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 @@ -13326,6 +13462,7 @@ local.get $0 i32.load offset=4 local.get $1 + local.tee $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13335,23 +13472,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 @@ -13364,20 +13501,21 @@ local.get $0 if 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 - local.get $2 + local.get $0 i32.const -2 i32.and local.set $0 @@ -13385,9 +13523,9 @@ end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.eqz if i32.const 1616 @@ -13397,7 +13535,7 @@ 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) @@ -13418,23 +13556,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 @@ -13491,14 +13629,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 +13656,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -13575,34 +13713,40 @@ i32.const 24 i32.const 17 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $11 i32.store - local.get $4 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store local.get $4 - local.get $1 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $11 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 3 i32.store offset=4 - local.get $4 + local.get $11 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store offset=8 local.get $4 - local.get $1 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $11 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 4 i32.store offset=12 - local.get $4 + local.get $11 i32.const 0 i32.store offset=16 - local.get $4 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer @@ -13610,18 +13754,18 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $3 - local.get $4 + local.get $11 i32.store loop $for-loop|0 - local.get $0 + local.get $2 i32.const 100 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 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13631,59 +13775,59 @@ i32.const 668265263 i32.mul local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul local.tee $3 + local.get $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 + local.set $4 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 i32.load offset=8 - local.tee $2 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $2 + local.get $4 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $2 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $4 br $while-continue|0 end end i32.const 0 - local.set $3 + local.set $4 end - local.get $3 + local.get $4 if i32.const 0 i32.const 1568 @@ -13692,17 +13836,17 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $0 - local.get $0 + local.get $11 + local.get $2 + local.get $2 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 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13712,59 +13856,59 @@ i32.const 668265263 i32.mul local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul local.tee $3 + local.get $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 + local.set $4 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 i32.load offset=8 - local.tee $2 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $2 + local.get $4 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $2 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $4 br $while-continue|02 end end i32.const 0 - local.set $3 + local.set $4 end - local.get $3 + local.get $4 i32.eqz if i32.const 0 @@ -13774,10 +13918,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $0 + local.get $11 + local.get $2 call $~lib/map/Map#get - local.get $0 + local.get $2 i32.const 10 i32.add i32.ne @@ -13789,14 +13933,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 $4 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -13809,17 +13953,17 @@ unreachable end i32.const 0 - 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 $4 + local.get $11 i32.load - local.get $4 + local.get $11 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13829,59 +13973,59 @@ i32.const 668265263 i32.mul local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul local.tee $3 + local.get $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 + local.set $4 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 i32.load offset=8 - local.tee $2 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $2 + local.get $4 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $2 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $4 br $while-continue|05 end end i32.const 0 - local.set $3 + local.set $4 end - local.get $3 + local.get $4 i32.eqz if i32.const 0 @@ -13891,10 +14035,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $0 + local.get $11 + local.get $2 call $~lib/map/Map#get - local.get $0 + local.get $2 i32.const 10 i32.add i32.ne @@ -13906,17 +14050,17 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $0 - local.get $0 + local.get $11 + local.get $2 + local.get $2 i32.const 20 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 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13926,59 +14070,59 @@ i32.const 668265263 i32.mul local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul local.tee $3 + local.get $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 + local.set $4 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $3 + local.get $4 if - local.get $3 + local.get $4 i32.load offset=8 - local.tee $2 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $2 + local.get $4 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $2 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $4 br $while-continue|08 end end i32.const 0 - local.set $3 + local.set $4 end - local.get $3 + local.get $4 i32.eqz if i32.const 0 @@ -13988,10 +14132,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $0 + local.get $11 + local.get $2 call $~lib/map/Map#get - local.get $0 + local.get $2 i32.const 20 i32.add i32.ne @@ -14003,14 +14147,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 $4 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -14023,10 +14167,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - local.set $0 - local.get $3 + local.tee $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -14035,17 +14176,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $4 + local.get $11 i32.load offset=8 - local.set $11 - local.get $4 + local.set $6 + local.get $11 i32.load offset=16 - local.tee $12 - local.set $3 - local.get $2 + local.set $7 + local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -14054,131 +14194,130 @@ i32.lt_s 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 i32.const 16 i32.const 18 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $2 i32.store - local.get $6 + local.get $2 i32.const 0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 + local.get $2 i32.const 0 i32.store offset=4 - local.get $6 + local.get $2 i32.const 0 i32.store offset=8 - local.get $6 + local.get $2 i32.const 0 i32.store offset=12 - local.get $3 + local.get $7 i32.const 268435455 i32.gt_u if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort 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 i32.const 2 i32.shl - local.tee $7 + local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $9 i32.store offset=4 - local.get $1 - local.get $7 - call $~lib/memory/memory.fill - local.get $6 - local.get $1 + local.get $2 + local.get $9 i32.store - local.get $6 - local.get $1 - call $~lib/rt/itcms/__link - local.get $6 - local.get $1 + local.get $9 + if + local.get $2 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $9 i32.store offset=4 - local.get $6 - local.get $7 + local.get $2 + local.get $8 i32.store offset=8 - local.get $6 - local.get $3 + 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 $3 local.get $2 - local.get $6 i32.store - loop $for-loop|01 - local.get $8 - local.get $12 + loop $for-loop|02 + local.get $5 + local.get $7 i32.lt_s if - local.get $8 + local.get $5 i32.const 12 i32.mul - local.get $11 + local.get $6 i32.add - local.tee $3 + local.tee $8 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $6 - local.get $0 + 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 - local.get $0 - i32.const 1 - i32.add - local.set $0 end - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 - br $for-loop|01 + local.set $5 + br $for-loop|02 end end - local.get $6 - local.get $0 + local.get $2 + local.get $1 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 - local.get $0 + 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 $6 + 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 @@ -14197,81 +14336,88 @@ i32.const 24 i32.const 19 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $12 i32.store - local.get $3 + local.get $12 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $3 i32.store local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + if + local.get $12 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 i32.const 3 i32.store offset=4 - local.get $3 + local.get $12 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $3 i32.store offset=8 local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + if + local.get $12 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 i32.const 4 i32.store offset=12 - local.get $3 + local.get $12 i32.const 0 i32.store offset=16 - local.get $3 + 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 $3 + local.get $12 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $9 i32.store offset=16 loop $for-loop|2 - local.get $6 + local.get $2 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 $2 i32.load offset=12 - local.get $5 - i32.le_u + i32.ge_u if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $2 i32.load offset=4 - local.get $5 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 - local.get $13 - local.get $5 + local.set $3 + local.get $7 + local.get $1 call $~lib/array/Array#__get - local.set $12 - local.get $4 + local.set $8 + local.get $11 i32.load - local.get $4 + local.get $11 i32.load offset=4 - local.get $0 + local.get $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14280,60 +14426,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 + local.set $4 block $__inlined_func$~lib/map/Map#find10 loop $while-continue|011 - local.get $1 + local.get $4 if - local.get $1 + 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 $0 - local.get $1 + local.get $3 + local.get $4 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find10 - local.get $2 + local.get $0 i32.const -2 i32.and - local.set $1 + local.set $4 br $while-continue|011 end end i32.const 0 - local.set $1 + local.set $4 end - local.get $1 + local.get $4 i32.eqz if i32.const 0 @@ -14343,14 +14489,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 $12 + local.get $8 i32.const 20 i32.sub - local.tee $2 + local.tee $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14359,60 +14505,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $4 + local.get $4 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#find13 loop $while-continue|014 - local.get $1 + local.get $4 if - local.get $1 + 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 $1 + local.get $0 + local.get $4 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find13 - local.get $7 + local.get $5 i32.const -2 i32.and - local.set $1 + local.set $4 br $while-continue|014 end end i32.const 0 - local.set $1 + local.set $4 end - local.get $1 + local.get $4 i32.eqz if i32.const 0 @@ -14433,10 +14579,10 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $3 + local.get $12 i32.load - local.get $0 - local.tee $1 + local.get $3 + local.tee $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14464,8 +14610,8 @@ i32.shr_u local.get $0 i32.xor - local.tee $14 - local.get $3 + local.tee $6 + local.get $12 i32.load offset=4 i32.and i32.const 2 @@ -14479,19 +14625,19 @@ if 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 $1 + local.get $4 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find15 - local.get $2 + local.get $5 i32.const -2 i32.and local.set $0 @@ -14504,18 +14650,18 @@ local.get $0 if local.get $0 - local.get $1 + local.get $3 i32.store offset=4 else - local.get $3 + local.get $12 i32.load offset=16 - local.get $3 + local.get $12 i32.load offset=12 i32.eq if - local.get $3 + local.get $12 i32.load offset=20 - local.get $3 + local.get $12 i32.load offset=12 i32.const 3 i32.mul @@ -14523,17 +14669,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $3 + local.get $12 i32.load offset=4 else - local.get $3 + local.get $12 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $8 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -14547,14 +14693,14 @@ i64.const 0 i64.store local.get $0 - local.get $8 + local.get $13 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $14 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -14562,45 +14708,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $15 + 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 $3 + local.get $12 i32.load offset=8 - local.tee $7 - local.get $3 + local.tee $10 + local.get $12 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $16 - local.get $2 + local.set $15 + local.get $4 local.set $0 - loop $while-continue|017 - local.get $7 - local.get $16 + 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 $9 + 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 $9 + local.get $16 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14609,35 +14755,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $9 + local.tee $16 i32.const 15 i32.shr_u - local.get $9 + local.get $16 i32.xor i32.const -2048144777 i32.mul - local.tee $9 + local.tee $16 i32.const 13 i32.shr_u - local.get $9 + local.get $16 i32.xor i32.const -1028477379 i32.mul - local.tee $9 + local.tee $16 i32.const 16 i32.shr_u - local.get $9 + local.get $16 i32.xor - local.get $8 + local.get $13 i32.and i32.const 2 i32.shl - local.get $10 + local.get $14 i32.add - local.tee $9 + local.tee $16 i32.load i32.store offset=8 - local.get $9 + local.get $16 local.get $0 i32.store local.get $0 @@ -14645,33 +14791,39 @@ i32.add local.set $0 end - local.get $7 + local.get $10 i32.const 12 i32.add - local.set $7 - br $while-continue|017 + local.set $10 + br $while-continue|00 end end - local.get $3 - local.get $10 + local.get $12 + local.get $14 i32.store - local.get $3 - local.get $10 - call $~lib/rt/itcms/__link - local.get $3 - local.get $8 + local.get $14 + if + local.get $12 + local.get $14 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $13 i32.store offset=4 - local.get $3 - local.get $2 + local.get $12 + local.get $4 i32.store offset=8 - local.get $3 - local.get $2 - call $~lib/rt/itcms/__link - local.get $3 - local.get $15 + local.get $4 + if + local.get $12 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $5 i32.store offset=12 - local.get $3 - local.get $3 + local.get $12 + local.get $12 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -14680,48 +14832,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $12 i32.load offset=8 local.tee $0 i32.store - local.get $3 - local.get $3 + local.get $12 + local.get $12 i32.load offset=16 - local.tee $8 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $8 + local.get $4 i32.const 12 i32.mul local.get $0 i32.add local.tee $0 - local.get $1 + local.get $3 i32.store local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 local.get $3 + i32.store offset=4 + local.get $12 + local.get $12 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 - local.get $14 + local.get $6 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $3 i32.load i32.store offset=8 - local.get $1 + local.get $3 local.get $0 i32.store end @@ -14729,21 +14881,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $9 + local.get $8 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 $12 i32.load offset=20 i32.const 100 i32.ne @@ -14755,7 +14907,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -14768,17 +14920,17 @@ 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 - local.get $4 + local.get $11 i32.load - local.get $4 + local.get $11 i32.load offset=4 - local.get $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14787,36 +14939,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 $2 + block $__inlined_func$~lib/map/Map#find18 + loop $while-continue|019 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 local.tee $1 i32.const 1 @@ -14824,23 +14976,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $2 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find19 + br_if $__inlined_func$~lib/map/Map#find18 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|020 + local.set $2 + br $while-continue|019 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.eqz if i32.const 0 @@ -14850,10 +15002,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $5 + local.get $11 + local.get $0 call $~lib/map/Map#get - local.get $5 + local.get $0 i32.const 20 i32.add i32.ne @@ -14865,14 +15017,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $5 + 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 $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14881,36 +15033,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 $2 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 local.tee $1 i32.const 1 @@ -14918,23 +15070,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $2 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find22 + br_if $__inlined_func$~lib/map/Map#find21 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|023 + local.set $2 + br $while-continue|022 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 @@ -14943,14 +15095,14 @@ 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 - local.get $4 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -14963,17 +15115,17 @@ 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 - local.get $4 + local.get $11 i32.load - local.get $4 + local.get $11 i32.load offset=4 - local.get $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14982,36 +15134,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 $2 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 local.tee $1 i32.const 1 @@ -15019,23 +15171,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $2 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find25 + br_if $__inlined_func$~lib/map/Map#find24 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|026 + local.set $2 + br $while-continue|025 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 @@ -15044,17 +15196,17 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $5 - local.get $5 + 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 $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -15063,36 +15215,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 $2 + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 local.tee $1 i32.const 1 @@ -15100,23 +15252,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $2 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find28 + br_if $__inlined_func$~lib/map/Map#find27 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|029 + local.set $2 + br $while-continue|028 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.eqz if i32.const 0 @@ -15126,14 +15278,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $5 + 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 $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -15142,36 +15294,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 $2 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 local.tee $1 i32.const 1 @@ -15179,23 +15331,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $2 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find31 + br_if $__inlined_func$~lib/map/Map#find30 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|032 + local.set $2 + br $while-continue|031 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 @@ -15204,14 +15356,14 @@ 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 - local.get $4 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -15223,9 +15375,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 @@ -15276,23 +15428,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 @@ -15368,7 +15520,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 @@ -15376,7 +15528,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,13 +15536,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 @@ -15398,23 +15550,22 @@ local.get $8 i32.ne if - local.get $8 + local.get $4 i32.load offset=12 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 $8 + local.get $4 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 +15588,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 @@ -15471,30 +15623,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 @@ -15533,23 +15691,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 @@ -15611,7 +15769,7 @@ if i32.const 1248 i32.const 1728 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -15666,23 +15824,23 @@ i32.const 668265263 i32.mul local.tee $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $2 - local.get $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul local.tee $2 - local.get $2 i32.const 16 i32.shr_u + local.get $2 i32.xor i32.and i32.const 2 @@ -15739,14 +15897,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 +15924,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/map/Map#rehash end ) @@ -15777,9 +15935,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 +15949,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 @@ -15816,9 +15980,9 @@ (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 @@ -15830,16 +15994,16 @@ i32.lt_s 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 @@ -15860,22 +16024,28 @@ local.get $5 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 $6 + if + local.get $5 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $5 i32.const 3 i32.store offset=4 local.get $5 i32.const 64 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 $6 + if + local.get $5 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $5 i32.const 4 i32.store offset=12 @@ -15889,7 +16059,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $5 i32.store loop $for-loop|0 @@ -16052,8 +16222,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $3 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -16062,17 +16231,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $2 i32.const 0 i32.store local.get $5 i32.load offset=8 - local.set $12 + local.set $7 local.get $5 i32.load offset=16 - local.tee $13 - local.set $3 - local.get $7 + local.set $8 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -16081,45 +16249,42 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $9 i64.const 0 i64.store - local.get $0 + local.get $9 i32.const 16 i32.const 21 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 $3 + local.get $8 i32.const 134217727 i32.gt_u if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $8 i32.const 8 - local.get $3 + local.get $8 i32.const 8 i32.gt_u select @@ -16128,84 +16293,86 @@ local.tee $9 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $11 i32.store offset=4 - local.get $0 - local.get $9 - call $~lib/memory/memory.fill - local.get $6 - local.get $0 + local.get $10 + local.get $11 i32.store - local.get $6 - local.get $0 - call $~lib/rt/itcms/__link - local.get $6 - local.get $0 + local.get $11 + if + local.get $10 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $11 i32.store offset=4 - local.get $6 + local.get $10 local.get $9 i32.store offset=8 - local.get $6 - local.get $3 + 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 $7 - local.get $6 + local.get $2 + local.get $10 i32.store - loop $for-loop|01 - local.get $2 - local.get $13 + 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 $12 + local.get $7 i32.add - local.tee $3 + local.tee $9 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $6 - local.get $1 - local.get $3 - i64.load - call $~lib/array/Array#__set - 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 + 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 $6 - local.get $1 + local.get $10 + local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 - 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 $6 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $5 call $~lib/map/Map#values - local.tee $13 + local.tee $11 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16217,83 +16384,90 @@ i32.lt_s br_if $folding-inner1 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 $12 i32.store - local.get $3 + local.get $12 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 $12 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 i32.const 3 i32.store offset=4 - local.get $3 + local.get $12 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 $12 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 i32.const 4 i32.store offset=12 - local.get $3 + local.get $12 i32.const 0 i32.store offset=16 - local.get $3 + 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 $3 + local.get $12 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $6 i32.store offset=16 loop $for-loop|2 - local.get $6 - i32.load offset=12 local.get $10 + i32.load offset=12 + local.get $1 i32.gt_s if - local.get $6 - i32.load offset=12 + local.get $1 + local.tee $2 local.get $10 - i32.le_u + i32.load offset=12 + i32.ge_u if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable end - local.get $6 - i32.load offset=4 local.get $10 + i32.load offset=4 + local.get $2 i32.const 3 i32.shl i32.add i64.load local.set $4 - local.get $13 - local.get $10 + local.get $11 + local.get $2 call $~lib/array/Array#__get - local.set $12 + local.set $7 local.get $5 local.get $4 call $~lib/map/Map#has @@ -16307,7 +16481,7 @@ unreachable end local.get $5 - local.get $12 + local.get $7 i32.const 20 i32.sub i64.extend_i32_s @@ -16332,7 +16506,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $3 + local.get $12 i32.load local.get $4 i32.wrap_i64 @@ -16356,76 +16530,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 $3 + local.tee $13 + local.get $12 i32.load offset=4 i32.and i32.const 2 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 $2 + 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 $2 + 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 - local.get $3 + local.get $12 i32.load offset=16 - local.get $3 + local.get $12 i32.load offset=12 i32.eq if - local.get $3 + local.get $12 i32.load offset=20 - local.get $3 + local.get $12 i32.load offset=12 i32.const 3 i32.mul @@ -16433,17 +16607,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $3 + local.get $12 i32.load offset=4 else - local.get $3 + local.get $12 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $1 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -16457,7 +16631,7 @@ i64.const 0 i64.store local.get $0 - local.get $1 + local.get $8 i32.const 1 i32.add local.tee $0 @@ -16472,46 +16646,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $16 + local.tee $14 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $12 i32.load offset=8 - local.tee $7 - local.get $3 + local.tee $3 + local.get $12 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $17 - local.get $2 + local.set $15 + local.get $1 local.set $0 loop $while-continue|00 - local.get $7 - local.get $17 + local.get $3 + local.get $15 i32.ne if - local.get $7 + local.get $3 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $7 + local.get $3 i64.load - local.tee $14 + local.tee $16 i64.store local.get $0 - local.get $7 + local.get $3 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 +16694,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 +16705,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 $8 i32.and i32.const 2 i32.shl local.get $9 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 +16741,39 @@ i32.add local.set $0 end - local.get $7 + local.get $3 i32.const 24 i32.add - local.set $7 + local.set $3 br $while-continue|00 end end - local.get $3 + local.get $12 local.get $9 i32.store - local.get $3 local.get $9 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 + if + local.get $12 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $8 i32.store offset=4 - local.get $3 - local.get $2 + local.get $12 + local.get $1 i32.store offset=8 - local.get $3 - local.get $2 - call $~lib/rt/itcms/__link - local.get $3 - local.get $16 + local.get $1 + if + local.get $12 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $14 i32.store offset=12 - local.get $3 - local.get $3 + local.get $12 + local.get $12 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -16602,12 +16782,12 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $12 i32.load offset=8 local.tee $0 i32.store - local.get $3 - local.get $3 + local.get $12 + local.get $12 i32.load offset=16 local.tee $1 i32.const 1 @@ -16624,18 +16804,18 @@ local.get $0 local.get $4 i64.store offset=8 - local.get $3 - local.get $3 + local.get $12 + local.get $12 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 - local.get $15 + local.get $13 i32.and i32.const 2 i32.shl @@ -16651,21 +16831,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $6 + local.get $7 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $10 + local.get $2 i32.const 1 i32.add - local.set $10 + local.set $1 br $for-loop|2 end end - local.get $3 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -16677,7 +16857,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $6 i32.load offset=20 i32.const 100 i32.ne @@ -16880,23 +17060,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 @@ -16972,7 +17152,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 @@ -16980,7 +17160,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,13 +17168,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 @@ -17002,23 +17182,22 @@ local.get $8 i32.ne if - local.get $8 + local.get $4 i32.load offset=12 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 $8 + local.get $4 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 +17220,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 @@ -17075,30 +17255,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 @@ -17137,23 +17323,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 @@ -17231,23 +17417,23 @@ i32.const 668265263 i32.mul local.tee $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $2 - local.get $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul local.tee $2 - local.get $2 i32.const 16 i32.shr_u + local.get $2 i32.xor i32.and i32.const 2 @@ -17304,14 +17490,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 +17517,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/map/Map#rehash end ) @@ -17350,9 +17536,9 @@ (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 @@ -17364,16 +17550,16 @@ i32.lt_s 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 @@ -17394,22 +17580,28 @@ local.get $5 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 $6 + if + local.get $5 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $5 i32.const 3 i32.store offset=4 local.get $5 i32.const 64 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 $6 + if + local.get $5 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $5 i32.const 4 i32.store offset=12 @@ -17423,7 +17615,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $5 i32.store loop $for-loop|0 @@ -17586,8 +17778,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $3 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -17596,17 +17787,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $2 i32.const 0 i32.store local.get $5 i32.load offset=8 - local.set $12 + local.set $7 local.get $5 i32.load offset=16 - local.tee $13 - local.set $3 - local.get $7 + local.set $8 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -17615,45 +17805,42 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $9 i64.const 0 i64.store - local.get $0 + local.get $9 i32.const 16 i32.const 24 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 $3 + local.get $8 i32.const 134217727 i32.gt_u if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $8 i32.const 8 - local.get $3 + local.get $8 i32.const 8 i32.gt_u select @@ -17662,84 +17849,86 @@ local.tee $9 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $11 i32.store offset=4 - local.get $0 - local.get $9 - call $~lib/memory/memory.fill - local.get $6 - local.get $0 + local.get $10 + local.get $11 i32.store - local.get $6 - local.get $0 - call $~lib/rt/itcms/__link - local.get $6 - local.get $0 + local.get $11 + if + local.get $10 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $11 i32.store offset=4 - local.get $6 + local.get $10 local.get $9 i32.store offset=8 - local.get $6 - local.get $3 + 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 $7 - local.get $6 + local.get $2 + local.get $10 i32.store - loop $for-loop|01 - local.get $2 - local.get $13 + 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 $12 + local.get $7 i32.add - local.tee $3 + local.tee $9 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $6 - local.get $1 - local.get $3 - i64.load - call $~lib/array/Array#__set - 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 + 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 $6 - local.get $1 + local.get $10 + local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 - 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 $6 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $5 call $~lib/map/Map#values - local.tee $13 + local.tee $11 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17751,83 +17940,90 @@ i32.lt_s br_if $folding-inner1 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 $12 i32.store - local.get $3 + local.get $12 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 $12 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 i32.const 3 i32.store offset=4 - local.get $3 + local.get $12 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 $12 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 i32.const 4 i32.store offset=12 - local.get $3 + local.get $12 i32.const 0 i32.store offset=16 - local.get $3 + 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 $3 + local.get $12 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $6 i32.store offset=16 loop $for-loop|2 - local.get $6 - i32.load offset=12 local.get $10 + i32.load offset=12 + local.get $1 i32.gt_s if - local.get $6 - i32.load offset=12 + local.get $1 + local.tee $2 local.get $10 - i32.le_u + i32.load offset=12 + i32.ge_u if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable end - local.get $6 - i32.load offset=4 local.get $10 + i32.load offset=4 + local.get $2 i32.const 3 i32.shl i32.add i64.load local.set $4 - local.get $13 - local.get $10 + local.get $11 + local.get $2 call $~lib/array/Array#__get - local.set $12 + local.set $7 local.get $5 local.get $4 call $~lib/map/Map#has @@ -17841,7 +18037,7 @@ unreachable end local.get $5 - local.get $12 + local.get $7 i32.const 20 i32.sub i64.extend_i32_s @@ -17866,7 +18062,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $3 + local.get $12 i32.load local.get $4 i32.wrap_i64 @@ -17890,76 +18086,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 $3 + local.tee $13 + local.get $12 i32.load offset=4 i32.and i32.const 2 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 $2 + 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 $2 + 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 - local.get $3 + local.get $12 i32.load offset=16 - local.get $3 + local.get $12 i32.load offset=12 i32.eq if - local.get $3 + local.get $12 i32.load offset=20 - local.get $3 + local.get $12 i32.load offset=12 i32.const 3 i32.mul @@ -17967,17 +18163,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $3 + local.get $12 i32.load offset=4 else - local.get $3 + local.get $12 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $1 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -17991,7 +18187,7 @@ i64.const 0 i64.store local.get $0 - local.get $1 + local.get $8 i32.const 1 i32.add local.tee $0 @@ -18006,46 +18202,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $16 + local.tee $14 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $12 i32.load offset=8 - local.tee $7 - local.get $3 + local.tee $3 + local.get $12 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $17 - local.get $2 + local.set $15 + local.get $1 local.set $0 loop $while-continue|00 - local.get $7 - local.get $17 + local.get $3 + local.get $15 i32.ne if - local.get $7 + local.get $3 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $7 + local.get $3 i64.load - local.tee $14 + local.tee $16 i64.store local.get $0 - local.get $7 + local.get $3 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 +18250,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 +18261,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 $8 i32.and i32.const 2 i32.shl local.get $9 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 +18297,39 @@ i32.add local.set $0 end - local.get $7 + local.get $3 i32.const 24 i32.add - local.set $7 + local.set $3 br $while-continue|00 end end - local.get $3 + local.get $12 local.get $9 i32.store - local.get $3 local.get $9 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 + if + local.get $12 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $8 i32.store offset=4 - local.get $3 - local.get $2 + local.get $12 + local.get $1 i32.store offset=8 - local.get $3 - local.get $2 - call $~lib/rt/itcms/__link - local.get $3 - local.get $16 + local.get $1 + if + local.get $12 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $14 i32.store offset=12 - local.get $3 - local.get $3 + local.get $12 + local.get $12 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -18136,12 +18338,12 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $12 i32.load offset=8 local.tee $0 i32.store - local.get $3 - local.get $3 + local.get $12 + local.get $12 i32.load offset=16 local.tee $1 i32.const 1 @@ -18158,18 +18360,18 @@ local.get $0 local.get $4 i64.store offset=8 - local.get $3 - local.get $3 + local.get $12 + local.get $12 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 - local.get $15 + local.get $13 i32.and i32.const 2 i32.shl @@ -18185,21 +18387,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $6 + local.get $7 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $10 + local.get $2 i32.const 1 i32.add - local.set $10 + local.set $1 br $for-loop|2 end end - local.get $3 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -18211,7 +18413,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $6 i32.load offset=20 i32.const 100 i32.ne @@ -18389,11 +18591,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 +18624,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 @@ -18438,37 +18640,37 @@ 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 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 $4 + local.get $7 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 f32.load - local.tee $4 + local.tee $8 f32.store local.get $2 - local.get $8 + local.get $4 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 @@ -18501,7 +18703,7 @@ i32.and i32.const 2 i32.shl - local.get $7 + local.get $5 i32.add local.tee $9 i32.load @@ -18514,28 +18716,34 @@ i32.add local.set $2 end - local.get $8 + local.get $4 i32.const 12 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 @@ -18565,23 +18773,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 @@ -18648,23 +18856,23 @@ i32.const 668265263 i32.mul local.tee $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $2 - local.get $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul local.tee $2 - local.get $2 i32.const 16 i32.shr_u + local.get $2 i32.xor i32.and i32.const 2 @@ -18721,14 +18929,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 +18956,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/map/Map#rehash end ) @@ -18756,18 +18964,18 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) + (local $3 i32) (local $4 i32) (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 i32) - (local $14 f32) + (local $14 i32) (local $15 i32) (local $16 i32) (local $17 i32) @@ -18781,16 +18989,16 @@ i32.lt_s 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 @@ -18799,60 +19007,66 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $1 i32.const 0 i32.store - local.get $5 + local.get $1 i32.const 24 i32.const 26 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $13 i32.store - local.get $4 + local.get $13 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $1 i32.store - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - local.get $4 + local.get $1 + if + local.get $13 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 i32.const 3 i32.store offset=4 - local.get $4 + local.get $13 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $1 i32.store offset=8 - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - local.get $4 + local.get $1 + if + local.get $13 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 i32.const 4 i32.store offset=12 - local.get $4 + local.get $13 i32.const 0 i32.store offset=16 - local.get $4 + 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 $1 - local.get $4 + local.get $2 + local.get $13 i32.store loop $for-loop|0 - local.get $3 + local.get $7 f32.const 100 f32.lt if - local.get $4 + local.get $13 i32.load - local.get $4 + local.get $13 i32.load offset=4 - local.get $3 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -18863,59 +19077,59 @@ 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 i32.shl i32.add i32.load - local.set $1 + local.set $6 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $6 if - local.get $1 + local.get $6 i32.load offset=8 - local.tee $6 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $7 + local.get $6 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $6 + local.get $1 i32.const -2 i32.and - local.set $1 + local.set $6 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $6 end - local.get $1 + local.get $6 if i32.const 0 i32.const 1568 @@ -18924,18 +19138,18 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 - local.get $3 + 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 $4 + local.get $13 i32.load - local.get $4 + local.get $13 i32.load offset=4 - local.get $3 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -18946,59 +19160,59 @@ 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 i32.shl i32.add i32.load - local.set $1 + local.set $6 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $1 + local.get $6 if - local.get $1 + local.get $6 i32.load offset=8 - local.tee $6 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $7 + local.get $6 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $6 + local.get $1 i32.const -2 i32.and - local.set $1 + local.set $6 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $6 end - local.get $1 + local.get $6 i32.eqz if i32.const 0 @@ -19008,10 +19222,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $13 + local.get $7 call $~lib/map/Map#get - local.get $3 + local.get $7 i32.trunc_f32_s i32.const 10 i32.add @@ -19024,14 +19238,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $7 f32.const 1 f32.add - local.set $3 + local.set $7 br $for-loop|0 end end - local.get $4 + local.get $13 i32.load offset=20 i32.const 100 i32.ne @@ -19044,17 +19258,17 @@ unreachable end f32.const 0 - local.set $3 + local.set $7 loop $for-loop|1 - local.get $3 + local.get $7 f32.const 100 f32.lt if - local.get $4 + local.get $13 i32.load - local.get $4 + local.get $13 i32.load offset=4 - local.get $3 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19065,59 +19279,59 @@ 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 i32.shl i32.add i32.load - local.set $1 + local.set $6 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $1 + local.get $6 if - local.get $1 + local.get $6 i32.load offset=8 - local.tee $6 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $7 + local.get $6 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $6 + local.get $1 i32.const -2 i32.and - local.set $1 + local.set $6 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $6 end - local.get $1 + local.get $6 i32.eqz if i32.const 0 @@ -19127,10 +19341,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $13 + local.get $7 call $~lib/map/Map#get - local.get $3 + local.get $7 i32.trunc_f32_s i32.const 10 i32.add @@ -19143,18 +19357,18 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 - local.get $3 + 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 $4 + local.get $13 i32.load - local.get $4 + local.get $13 i32.load offset=4 - local.get $3 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19165,59 +19379,59 @@ 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 i32.shl i32.add i32.load - local.set $1 + local.set $6 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $1 + local.get $6 if - local.get $1 + local.get $6 i32.load offset=8 - local.tee $6 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $7 + local.get $6 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $6 + local.get $1 i32.const -2 i32.and - local.set $1 + local.set $6 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $6 end - local.get $1 + local.get $6 i32.eqz if i32.const 0 @@ -19227,10 +19441,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $13 + local.get $7 call $~lib/map/Map#get - local.get $3 + local.get $7 i32.trunc_f32_s i32.const 20 i32.add @@ -19243,14 +19457,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $7 f32.const 1 f32.add - local.set $3 + local.set $7 br $for-loop|1 end end - local.get $4 + local.get $13 i32.load offset=20 i32.const 100 i32.ne @@ -19263,8 +19477,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $9 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -19273,17 +19486,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $8 i32.const 0 i32.store - local.get $4 + local.get $13 i32.load offset=8 - local.set $12 - local.get $4 + local.set $6 + local.get $13 i32.load offset=16 - local.tee $13 - local.set $1 - local.get $7 + local.set $3 + local.get $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -19292,105 +19504,102 @@ i32.lt_s br_if $folding-inner1 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 27 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store - local.get $6 + local.get $4 i32.const 0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 + local.get $4 i32.const 0 i32.store offset=4 - local.get $6 + local.get $4 i32.const 0 i32.store offset=8 - local.get $6 + local.get $4 i32.const 0 i32.store offset=12 - local.get $1 + local.get $3 i32.const 268435455 i32.gt_u if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 8 - local.get $1 + local.get $3 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $9 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $1 i32.store offset=4 - local.get $5 - local.get $9 - call $~lib/memory/memory.fill - local.get $6 - local.get $5 + local.get $4 + local.get $1 i32.store - local.get $6 - local.get $5 - call $~lib/rt/itcms/__link - local.get $6 - local.get $5 + local.get $1 + if + local.get $4 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 + local.get $1 i32.store offset=4 - local.get $6 - local.get $9 + local.get $4 + local.get $2 i32.store offset=8 - local.get $6 - local.get $1 + 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 $6 + local.get $8 + local.get $4 i32.store - loop $for-loop|01 - local.get $2 - local.get $13 - i32.lt_s + loop $for-loop|02 + local.get $3 + local.get $10 + i32.gt_s if - local.get $2 + local.get $10 i32.const 12 i32.mul - local.get $12 + local.get $6 i32.add - local.tee $5 + local.tee $1 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $0 + local.get $1 + f32.load + local.set $7 + local.get $5 local.tee $1 i32.const 1 i32.add - local.set $0 - local.get $5 - f32.load - local.set $3 - local.get $6 + local.set $5 + local.get $4 i32.load offset=12 local.get $1 i32.le_u @@ -19401,57 +19610,58 @@ if i32.const 1248 i32.const 1728 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $4 local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $2 i32.const 2 i32.const 1 call $~lib/array/ensureCapacity - local.get $6 - local.get $5 + local.get $4 + local.get $2 i32.store offset=12 end - local.get $6 + local.get $4 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add - local.get $3 + local.get $7 f32.store end - local.get $2 + local.get $10 i32.const 1 i32.add - local.set $2 - br $for-loop|01 + local.set $10 + br $for-loop|02 end end - local.get $6 - local.get $0 + local.get $4 + local.get $5 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 - local.get $0 + 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 $6 + local.get $9 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $13 call $~lib/map/Map#values - local.tee $13 + local.tee $12 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19470,81 +19680,88 @@ i32.const 24 i32.const 28 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 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 $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 3 i32.store offset=4 - local.get $1 + local.get $3 i32.const 48 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 $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 4 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 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $16 i32.store offset=16 loop $for-loop|2 - local.get $6 + local.get $4 i32.load offset=12 - local.get $10 + local.get $0 i32.gt_s if - local.get $6 + local.get $0 + local.tee $2 + local.get $4 i32.load offset=12 - local.get $10 - i32.le_u + i32.ge_u if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $4 i32.load offset=4 - local.get $10 + local.get $2 i32.const 2 i32.shl i32.add f32.load - local.set $3 - local.get $13 - local.get $10 + local.set $11 + local.get $12 + local.get $2 call $~lib/array/Array#__get - local.set $12 - local.get $4 + local.set $10 + local.get $13 i32.load - local.get $4 + local.get $13 i32.load offset=4 - local.get $3 + local.get $11 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19555,59 +19772,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 $6 block $__inlined_func$~lib/map/Map#find10 loop $while-continue|011 - local.get $0 + local.get $6 if - local.get $0 + local.get $6 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 $11 + local.get $6 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find10 - local.get $2 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $6 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $6 end - local.get $0 + local.get $6 i32.eqz if i32.const 0 @@ -19617,15 +19834,15 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $13 i32.load - local.get $4 + local.get $13 i32.load offset=4 - local.get $12 + local.get $10 i32.const 20 i32.sub f32.convert_i32_s - local.tee $14 + local.tee $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19636,59 +19853,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 $6 block $__inlined_func$~lib/map/Map#find13 loop $while-continue|014 - local.get $0 + local.get $6 if - local.get $0 + local.get $6 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 $7 + local.get $6 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find13 - local.get $2 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $6 br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $6 end - local.get $0 + local.get $6 i32.eqz if i32.const 0 @@ -19709,9 +19926,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 - i32.load local.get $3 + i32.load + local.get $11 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19740,8 +19957,8 @@ i32.shr_u local.get $0 i32.xor - local.tee $15 - local.get $1 + local.tee $9 + local.get $3 i32.load offset=4 i32.and i32.const 2 @@ -19755,19 +19972,19 @@ if local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $11 local.get $0 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find15 - local.get $2 + local.get $1 i32.const -2 i32.and local.set $0 @@ -19780,18 +19997,18 @@ local.get $0 if local.get $0 - local.get $3 + local.get $11 f32.store offset=4 else - local.get $1 + local.get $3 i32.load offset=16 - local.get $1 + local.get $3 i32.load offset=12 i32.eq if - local.get $1 + local.get $3 i32.load offset=20 - local.get $1 + local.get $3 i32.load offset=12 i32.const 3 i32.mul @@ -19799,17 +20016,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $1 + local.get $3 i32.load offset=4 else - local.get $1 + local.get $3 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $5 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -19823,14 +20040,14 @@ i64.const 0 i64.store local.get $0 - local.get $5 + 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 $14 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -19838,45 +20055,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $16 + 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 $1 + local.get $3 i32.load offset=8 - local.tee $7 - local.get $1 + local.tee $5 + local.get $3 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $17 - local.get $2 + local.get $1 local.set $0 - loop $while-continue|017 - local.get $7 + loop $while-continue|00 + local.get $5 local.get $17 i32.ne if - local.get $7 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $7 + local.get $5 f32.load - local.tee $14 + local.tee $7 f32.store local.get $0 - local.get $7 + local.get $5 f32.load offset=4 f32.store offset=4 local.get $0 - local.get $14 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19886,35 +20103,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $8 + local.tee $6 i32.const 15 i32.shr_u - local.get $8 + local.get $6 i32.xor i32.const -2048144777 i32.mul - local.tee $8 + local.tee $6 i32.const 13 i32.shr_u - local.get $8 + local.get $6 i32.xor i32.const -1028477379 i32.mul - local.tee $8 + local.tee $6 i32.const 16 i32.shr_u - local.get $8 + local.get $6 i32.xor - local.get $5 + local.get $15 i32.and i32.const 2 i32.shl - local.get $9 + local.get $14 i32.add - local.tee $8 + local.tee $6 i32.load i32.store offset=8 - local.get $8 + local.get $6 local.get $0 i32.store local.get $0 @@ -19922,33 +20139,39 @@ i32.add local.set $0 end - local.get $7 + local.get $5 i32.const 12 i32.add - local.set $7 - br $while-continue|017 + local.set $5 + br $while-continue|00 end end - local.get $1 - local.get $9 + local.get $3 + local.get $14 i32.store - local.get $1 - local.get $9 - call $~lib/rt/itcms/__link - local.get $1 - local.get $5 + local.get $14 + if + local.get $3 + local.get $14 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $15 i32.store offset=4 + local.get $3 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 $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $8 i32.store offset=12 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -19957,70 +20180,70 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.load offset=8 - local.tee $0 + local.tee $1 i32.store - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=16 - local.tee $5 + local.tee $0 i32.const 1 i32.add i32.store offset=16 - local.get $5 + local.get $0 i32.const 12 i32.mul - local.get $0 + local.get $1 i32.add - local.tee $0 - local.get $3 + local.tee $1 + local.get $11 f32.store - local.get $0 - local.get $3 - f32.store offset=4 - local.get $1 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 $1 + local.get $3 i32.load - local.get $1 + local.get $3 i32.load offset=4 - local.get $15 + local.get $9 i32.and i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $0 i32.load i32.store offset=8 - local.get $5 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 $16 + local.get $10 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $10 + local.get $2 i32.const 1 i32.add - local.set $10 + local.set $0 br $for-loop|2 end end - local.get $1 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -20032,7 +20255,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $16 i32.load offset=20 i32.const 100 i32.ne @@ -20045,17 +20268,17 @@ unreachable end f32.const 0 - local.set $3 + local.set $7 loop $for-loop|3 - local.get $3 + local.get $7 f32.const 50 f32.lt if - local.get $4 + local.get $13 i32.load - local.get $4 + local.get $13 i32.load offset=4 - local.get $3 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20065,60 +20288,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 $6 + block $__inlined_func$~lib/map/Map#find18 + loop $while-continue|019 + local.get $6 if - local.get $1 + local.get $6 i32.load offset=8 - local.tee $5 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $7 + local.get $6 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find19 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find18 + local.get $0 i32.const -2 i32.and - local.set $1 - br $while-continue|020 + local.set $6 + br $while-continue|019 end end i32.const 0 - local.set $1 + local.set $6 end - local.get $1 + local.get $6 i32.eqz if i32.const 0 @@ -20128,10 +20351,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $13 + local.get $7 call $~lib/map/Map#get - local.get $3 + local.get $7 i32.trunc_f32_s i32.const 20 i32.add @@ -20144,14 +20367,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $13 + local.get $7 call $~lib/map/Map#delete - local.get $4 + local.get $13 i32.load - local.get $4 + local.get $13 i32.load offset=4 - local.get $3 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20161,60 +20384,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 $6 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $6 if - local.get $1 + local.get $6 i32.load offset=8 - local.tee $5 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $7 + local.get $6 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find22 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find21 + local.get $0 i32.const -2 i32.and - local.set $1 - br $while-continue|023 + local.set $6 + br $while-continue|022 end end i32.const 0 - local.set $1 + local.set $6 end - local.get $1 + local.get $6 if i32.const 0 i32.const 1568 @@ -20223,14 +20446,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $7 f32.const 1 f32.add - local.set $3 + local.set $7 br $for-loop|3 end end - local.get $4 + local.get $13 i32.load offset=20 i32.const 50 i32.ne @@ -20243,17 +20466,17 @@ unreachable end f32.const 0 - local.set $3 + local.set $7 loop $for-loop|4 - local.get $3 + local.get $7 f32.const 50 f32.lt if - local.get $4 + local.get $13 i32.load - local.get $4 + local.get $13 i32.load offset=4 - local.get $3 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20263,60 +20486,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 $6 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $6 if - local.get $1 + local.get $6 i32.load offset=8 - local.tee $5 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $7 + local.get $6 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find25 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find24 + local.get $0 i32.const -2 i32.and - local.set $1 - br $while-continue|026 + local.set $6 + br $while-continue|025 end end i32.const 0 - local.set $1 + local.set $6 end - local.get $1 + local.get $6 if i32.const 0 i32.const 1568 @@ -20325,18 +20548,18 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 - local.get $3 + 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 $4 + local.get $13 i32.load - local.get $4 + local.get $13 i32.load offset=4 - local.get $3 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20346,60 +20569,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 $6 + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $6 if - local.get $1 + local.get $6 i32.load offset=8 - local.tee $5 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $7 + local.get $6 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find28 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find27 + local.get $0 i32.const -2 i32.and - local.set $1 - br $while-continue|029 + local.set $6 + br $while-continue|028 end end i32.const 0 - local.set $1 + local.set $6 end - local.get $1 + local.get $6 i32.eqz if i32.const 0 @@ -20409,14 +20632,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $13 + local.get $7 call $~lib/map/Map#delete - local.get $4 + local.get $13 i32.load - local.get $4 + local.get $13 i32.load offset=4 - local.get $3 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20426,60 +20649,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 $6 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $6 if - local.get $1 + local.get $6 i32.load offset=8 - local.tee $5 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $7 + local.get $6 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find31 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find30 + local.get $0 i32.const -2 i32.and - local.set $1 - br $while-continue|032 + local.set $6 + br $while-continue|031 end end i32.const 0 - local.set $1 + local.set $6 end - local.get $1 + local.get $6 if i32.const 0 i32.const 1568 @@ -20488,14 +20711,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $7 f32.const 1 f32.add - local.set $3 + local.set $7 br $for-loop|4 end end - local.get $4 + local.get $13 i32.load offset=20 i32.const 50 i32.ne @@ -20507,9 +20730,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $13 call $~lib/map/Map#clear - local.get $4 + local.get $13 i32.load offset=20 if i32.const 0 @@ -20563,23 +20786,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 @@ -20622,12 +20845,12 @@ (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 +20879,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 @@ -20664,7 +20887,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 +20895,39 @@ 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=12 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 $9 + local.get $4 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 +20937,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 +20949,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 @@ -20761,30 +20984,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 @@ -20826,23 +21055,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 @@ -20893,15 +21122,15 @@ ) (func $~lib/map/Map#delete (param $0 i32) (param $1 f64) (local $2 i32) - (local $3 i32) - (local $4 i64) + (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 $4 + local.tee $3 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -20911,7 +21140,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $4 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 @@ -20923,23 +21152,23 @@ i32.const 668265263 i32.mul local.tee $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $2 - local.get $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul local.tee $2 - local.get $2 i32.const 16 i32.shr_u + local.get $2 i32.xor i32.and i32.const 2 @@ -20953,7 +21182,7 @@ if local.get $2 i32.load offset=12 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -20965,7 +21194,7 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + local.get $4 i32.const -2 i32.and local.set $2 @@ -20996,14 +21225,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 +21252,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/map/Map#rehash end ) @@ -21031,10 +21260,10 @@ (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 $6 i64) (local $7 i32) (local $8 i32) (local $9 i32) @@ -21042,11 +21271,11 @@ (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 @@ -21057,16 +21286,16 @@ i32.lt_s 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 @@ -21082,50 +21311,56 @@ i32.const 24 i32.const 29 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $5 i32.store - local.get $4 + local.get $5 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $7 i32.store - local.get $4 + local.get $7 + if + local.get $5 + local.get $7 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $5 - call $~lib/rt/itcms/__link - local.get $4 i32.const 3 i32.store offset=4 - local.get $4 + local.get $5 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $7 i32.store offset=8 - local.get $4 + local.get $7 + if + local.get $5 + local.get $7 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $5 - call $~lib/rt/itcms/__link - local.get $4 i32.const 4 i32.store offset=12 - local.get $4 + local.get $5 i32.const 0 i32.store offset=16 - local.get $4 + 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 $4 + 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 $5 local.get $4 - local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -21135,15 +21370,15 @@ call $~lib/builtins/abort unreachable end + local.get $5 + local.get $4 local.get $4 - local.get $3 - local.get $3 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set + local.get $5 local.get $4 - local.get $3 call $~lib/map/Map#has i32.eqz if @@ -21154,10 +21389,10 @@ call $~lib/builtins/abort unreachable end + local.get $5 local.get $4 - local.get $3 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.trunc_f64_s i32.const 10 i32.add @@ -21170,14 +21405,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 $4 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -21190,14 +21425,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 $5 local.get $4 - local.get $3 call $~lib/map/Map#has i32.eqz if @@ -21208,10 +21443,10 @@ call $~lib/builtins/abort unreachable end + local.get $5 local.get $4 - local.get $3 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.trunc_f64_s i32.const 10 i32.add @@ -21224,15 +21459,15 @@ call $~lib/builtins/abort unreachable end + local.get $5 + local.get $4 local.get $4 - local.get $3 - local.get $3 i32.trunc_f64_s i32.const 20 i32.add call $~lib/map/Map#set + local.get $5 local.get $4 - local.get $3 call $~lib/map/Map#has i32.eqz if @@ -21243,10 +21478,10 @@ call $~lib/builtins/abort unreachable end + local.get $5 local.get $4 - local.get $3 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.trunc_f64_s i32.const 20 i32.add @@ -21259,14 +21494,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 $4 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -21279,8 +21514,7 @@ 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 @@ -21289,17 +21523,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $2 i32.const 0 i32.store - local.get $4 + local.get $5 i32.load offset=8 - local.set $12 - local.get $4 + local.set $8 + local.get $5 i32.load offset=16 - local.tee $13 - local.set $1 - local.get $7 + local.set $9 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -21308,166 +21541,164 @@ i32.lt_s br_if $folding-inner1 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 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 $9 i32.const 134217727 i32.gt_u if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort 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 3 i32.shl - local.tee $9 + local.tee $10 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $12 i32.store offset=4 - local.get $5 - local.get $9 - call $~lib/memory/memory.fill - local.get $6 - local.get $5 + local.get $11 + 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 $11 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $12 i32.store offset=4 - local.get $6 - local.get $9 + local.get $11 + local.get $10 i32.store offset=8 - local.get $6 - local.get $1 + local.get $11 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 - local.get $6 + local.get $2 + local.get $11 i32.store - loop $for-loop|01 - local.get $2 - local.get $13 + 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 $12 + local.get $8 i32.add - local.tee $5 + 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 $5 - f64.load - local.set $3 - local.get $6 + 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 i32.const 1248 i32.const 1728 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable end - local.get $6 - local.get $1 + local.get $11 + local.get $2 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 + 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 $6 - local.get $0 + local.get $11 + local.get $1 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 - local.get $0 + local.get $11 + 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 $7 + local.get $11 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 call $~lib/map/Map#values - local.tee $13 + local.tee $12 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21479,85 +21710,92 @@ i32.lt_s 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 $1 + local.tee $13 i32.store - local.get $1 + local.get $13 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 $13 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 i32.const 3 i32.store offset=4 - local.get $1 + local.get $13 i32.const 96 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 $13 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 i32.const 4 i32.store offset=12 - local.get $1 + local.get $13 i32.const 0 i32.store offset=16 - local.get $1 + 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 $1 + local.get $13 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $7 i32.store offset=16 loop $for-loop|2 - local.get $6 + local.get $11 i32.load offset=12 - local.get $10 + local.get $0 i32.gt_s if - local.get $6 + local.get $0 + local.tee $1 + local.get $11 i32.load offset=12 - local.get $10 - i32.le_u + i32.ge_u if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $11 i32.load offset=4 - local.get $10 + local.get $1 i32.const 3 i32.shl i32.add f64.load - local.set $3 - local.get $13 - local.get $10 + local.set $4 + local.get $12 + local.get $1 call $~lib/array/Array#__get - local.set $12 + local.set $8 + local.get $5 local.get $4 - local.get $3 call $~lib/map/Map#has i32.eqz if @@ -21568,8 +21806,8 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $12 + local.get $5 + local.get $8 i32.const 20 i32.sub f64.convert_i32_s @@ -21594,11 +21832,11 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $13 i32.load - local.get $3 + local.get $4 i64.reinterpret_f64 - local.tee $14 + local.tee $6 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -21608,7 +21846,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $14 + local.get $6 i64.const 32 i64.shr_u i32.wrap_i64 @@ -21620,26 +21858,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.tee $14 + local.get $13 i32.load offset=4 i32.and i32.const 2 @@ -21659,7 +21897,7 @@ if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 f64.load f64.eq @@ -21678,18 +21916,18 @@ local.get $0 if local.get $0 - local.get $3 + local.get $4 f64.store offset=8 else - local.get $1 + local.get $13 i32.load offset=16 - local.get $1 + local.get $13 i32.load offset=12 i32.eq if - local.get $1 + local.get $13 i32.load offset=20 - local.get $1 + local.get $13 i32.load offset=12 i32.const 3 i32.mul @@ -21697,17 +21935,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $1 + local.get $13 i32.load offset=4 else - local.get $1 + local.get $13 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $5 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -21721,14 +21959,14 @@ i64.const 0 i64.store local.get $0 - local.get $5 + local.get $9 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 + local.tee $10 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -21736,48 +21974,47 @@ i32.shl i32.const 3 i32.div_s - local.tee $16 + local.tee $15 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store offset=4 - local.get $1 + local.get $13 i32.load offset=8 - local.tee $7 - local.get $1 + local.tee $3 + local.get $13 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $17 + local.set $16 local.get $2 local.set $0 loop $while-continue|00 - local.get $7 - local.get $17 + local.get $3 + local.get $16 i32.ne if - local.get $7 + local.get $3 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $7 + local.get $3 f64.load - local.tee $18 + local.tee $17 f64.store local.get $0 - local.get $7 + local.get $3 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 $6 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -21787,7 +22024,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $14 + local.get $6 i64.const 32 i64.shr_u i32.wrap_i64 @@ -21798,34 +22035,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 $9 i32.and i32.const 2 i32.shl - local.get $9 + local.get $10 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 +22071,39 @@ i32.add local.set $0 end - local.get $7 + local.get $3 i32.const 24 i32.add - local.set $7 + local.set $3 br $while-continue|00 end end - local.get $1 - local.get $9 + local.get $13 + local.get $10 i32.store - local.get $1 + local.get $10 + if + local.get $13 + local.get $10 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 local.get $9 - call $~lib/rt/itcms/__link - local.get $1 - local.get $5 i32.store offset=4 - local.get $1 + local.get $13 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 $13 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $13 + local.get $15 i32.store offset=12 - local.get $1 - local.get $1 + local.get $13 + local.get $13 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -21868,48 +22112,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $13 i32.load offset=8 local.tee $0 i32.store - local.get $1 - local.get $1 + local.get $13 + local.get $13 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 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 $1 - local.get $1 + local.get $13 + local.get $13 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $1 + local.get $13 i32.load - local.get $1 + local.get $13 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=16 - local.get $5 + local.get $2 local.get $0 i32.store end @@ -21917,21 +22161,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $7 + local.get $8 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 $13 i32.load offset=20 i32.const 100 i32.ne @@ -21943,7 +22187,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $7 i32.load offset=20 i32.const 100 i32.ne @@ -21956,14 +22200,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 $5 local.get $4 - local.get $3 call $~lib/map/Map#has i32.eqz if @@ -21974,10 +22218,10 @@ call $~lib/builtins/abort unreachable end + local.get $5 local.get $4 - local.get $3 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.trunc_f64_s i32.const 20 i32.add @@ -21990,11 +22234,11 @@ call $~lib/builtins/abort unreachable end + local.get $5 local.get $4 - local.get $3 call $~lib/map/Map#delete + local.get $5 local.get $4 - local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -22004,14 +22248,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 $4 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -22024,14 +22268,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 $5 local.get $4 - local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -22041,15 +22285,15 @@ call $~lib/builtins/abort unreachable end + local.get $5 + local.get $4 local.get $4 - local.get $3 - local.get $3 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set + local.get $5 local.get $4 - local.get $3 call $~lib/map/Map#has i32.eqz if @@ -22060,11 +22304,11 @@ call $~lib/builtins/abort unreachable end + local.get $5 local.get $4 - local.get $3 call $~lib/map/Map#delete + local.get $5 local.get $4 - local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -22074,14 +22318,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 $4 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -22093,9 +22337,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 @@ -22119,6 +22363,7 @@ unreachable ) (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) block $folding-inner1 block $folding-inner0 block $invalid @@ -22140,7 +22385,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 +22393,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 @@ -22236,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 @@ -22261,7 +22517,7 @@ if i32.const 1456 i32.const 1504 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -22270,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) @@ -22335,7 +22588,7 @@ i32.const 16 i32.shr_u i32.xor - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 i32.and @@ -22350,7 +22603,7 @@ if local.get $1 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -22364,7 +22617,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $5 i32.const -2 i32.and local.set $1 @@ -22417,11 +22670,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 $1 @@ -22443,7 +22696,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -22494,9 +22747,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 @@ -22510,7 +22760,7 @@ if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -22524,25 +22774,25 @@ 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 - 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 @@ -22559,6 +22809,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -22575,28 +22826,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 + local.tee $6 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 @@ -22604,36 +22855,37 @@ 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 $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 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) @@ -22668,9 +22920,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 +22934,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 @@ -22750,7 +23008,7 @@ i32.const 16 i32.shr_u i32.xor - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 i32.and @@ -22765,7 +23023,7 @@ if local.get $1 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -22777,7 +23035,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $5 i32.const -2 i32.and local.set $1 @@ -22830,11 +23088,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 $1 @@ -22856,7 +23114,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -22928,7 +23186,7 @@ i32.const 16 i32.shr_u i32.xor - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 i32.and @@ -22943,7 +23201,7 @@ if local.get $1 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -22957,7 +23215,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $5 i32.const -2 i32.and local.set $1 @@ -23010,11 +23268,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 $1 @@ -23036,7 +23294,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23107,7 +23365,7 @@ i32.const 16 i32.shr_u i32.xor - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 i32.and @@ -23122,7 +23380,7 @@ if local.get $1 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -23136,7 +23394,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $5 i32.const -2 i32.and local.set $1 @@ -23189,11 +23447,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 $1 @@ -23215,7 +23473,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23287,7 +23545,7 @@ i32.const 16 i32.shr_u i32.xor - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 i32.and @@ -23302,7 +23560,7 @@ if local.get $1 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -23316,7 +23574,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $5 i32.const -2 i32.and local.set $1 @@ -23369,11 +23627,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 $1 @@ -23395,7 +23653,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23465,7 +23723,7 @@ i32.const 16 i32.shr_u i32.xor - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 i32.and @@ -23480,7 +23738,7 @@ if local.get $1 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -23492,7 +23750,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $5 i32.const -2 i32.and local.set $1 @@ -23545,11 +23803,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 $1 @@ -23571,7 +23829,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23634,25 +23892,25 @@ i32.const 668265263 i32.mul local.tee $3 - local.get $3 i32.const 15 i32.shr_u + local.get $3 i32.xor i32.const -2048144777 i32.mul local.tee $3 - local.get $3 i32.const 13 i32.shr_u + local.get $3 i32.xor i32.const -1028477379 i32.mul local.tee $3 - local.get $3 i32.const 16 i32.shr_u + local.get $3 i32.xor - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 i32.and @@ -23667,7 +23925,7 @@ if local.get $3 i32.load offset=12 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -23679,7 +23937,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $5 i32.const -2 i32.and local.set $3 @@ -23732,11 +23990,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 +24016,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23781,6 +24039,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -23797,28 +24056,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 + local.tee $6 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 @@ -23826,36 +24085,37 @@ 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 $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 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) @@ -23903,25 +24163,25 @@ i32.const 668265263 i32.mul local.tee $3 - local.get $3 i32.const 15 i32.shr_u + local.get $3 i32.xor i32.const -2048144777 i32.mul local.tee $3 - local.get $3 i32.const 13 i32.shr_u + local.get $3 i32.xor i32.const -1028477379 i32.mul local.tee $3 - local.get $3 i32.const 16 i32.shr_u + local.get $3 i32.xor - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 i32.and @@ -23936,7 +24196,7 @@ if local.get $3 i32.load offset=12 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -23948,7 +24208,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $5 i32.const -2 i32.and local.set $3 @@ -24001,11 +24261,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 +24287,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -24097,7 +24357,7 @@ i32.const 16 i32.shr_u i32.xor - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 i32.and @@ -24112,7 +24372,7 @@ if local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -24124,7 +24384,7 @@ f32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $5 i32.const -2 i32.and local.set $3 @@ -24177,11 +24437,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 +24463,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 +24482,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 @@ -24247,7 +24507,7 @@ i32.load local.get $1 i64.reinterpret_f64 - local.tee $5 + local.tee $4 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -24257,7 +24517,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $5 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 @@ -24269,25 +24529,25 @@ i32.const 668265263 i32.mul local.tee $3 - local.get $3 i32.const 15 i32.shr_u + local.get $3 i32.xor i32.const -2048144777 i32.mul local.tee $3 - local.get $3 i32.const 13 i32.shr_u + local.get $3 i32.xor i32.const -1028477379 i32.mul local.tee $3 - local.get $3 i32.const 16 i32.shr_u + local.get $3 i32.xor - local.tee $6 + local.tee $5 local.get $0 i32.load offset=4 i32.and @@ -24302,7 +24562,7 @@ if local.get $3 i32.load offset=12 - local.tee $4 + local.tee $6 i32.const 1 i32.and if (result i32) @@ -24314,7 +24574,7 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + local.get $6 i32.const -2 i32.and local.set $3 @@ -24367,11 +24627,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 +24653,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 +24670,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/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 2a7dc6da68..d74fda104e 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)) @@ -1559,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 @@ -4123,7 +4128,7 @@ if i32.const 432 i32.const 704 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -4167,14 +4172,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 +4220,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4300,7 +4301,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4422,7 +4423,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4448,7 +4449,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -5928,7 +5929,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -6012,7 +6013,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -7230,7 +7231,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -7314,7 +7315,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -8522,7 +8523,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -8606,7 +8607,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -10434,7 +10435,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -10518,7 +10519,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -11725,7 +11726,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -11809,7 +11810,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -13024,7 +13025,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -13108,7 +13109,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -14307,7 +14308,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -14391,7 +14392,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -15607,7 +15608,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -15691,7 +15692,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -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 @@ -17346,7 +17348,7 @@ if i32.const 432 i32.const 480 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -17357,10 +17359,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 +17590,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -17610,10 +17612,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 +17762,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -17782,10 +17784,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 +18459,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -18479,10 +18481,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 +19063,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -19083,10 +19085,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 +19667,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -19687,10 +19689,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 +20435,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -20455,10 +20457,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 +21039,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -21059,10 +21061,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 +21643,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -21663,10 +21665,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 +22247,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -22267,10 +22269,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 +22851,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -22871,10 +22873,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/math.optimized.wat b/tests/compiler/std/math.optimized.wat index decb92239f..45a5de7d71 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -1,8 +1,8 @@ (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))) @@ -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 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 $0 + 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 @@ -790,13 +788,13 @@ f64.div local.get $4 f64.mul + local.get $3 + local.get $0 local.get $0 - local.get $1 - local.get $1 f64.mul f64.sub local.get $4 - local.get $1 + local.get $0 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 $4 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.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 + local.get $4 f32.mul - local.get $0 - local.get $3 local.get $3 + local.get $0 + local.get $0 f32.mul f32.sub - local.get $5 - local.get $3 + local.get $4 + local.get $0 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,7 +1397,7 @@ f64.add f64.mul f64.add - local.get $5 + local.get $6 f64.add end ) @@ -1412,19 +1406,17 @@ (local $4 i64) 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 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 + br_if $__inlined_func$~lib/math/NativeMath.acosh + drop local.get $4 i64.const 52 i64.shr_u @@ -1434,7 +1426,7 @@ i64.const 1024 i64.lt_u if - local.get $3 + local.get $0 f64.const 1 f64.sub local.tee $3 @@ -1454,13 +1446,13 @@ 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 @@ -1938,7 +1927,7 @@ f64.sub local.tee $0 f64.sqrt - local.set $1 + local.set $3 local.get $0 local.get $0 local.get $0 @@ -1980,15 +1969,15 @@ f64.const 1 f64.add f64.div - local.set $3 - local.get $2 + local.set $4 + local.get $1 i32.const 1072640819 i32.ge_u if (result f64) f64.const 1.5707963267948966 - local.get $1 - local.get $1 local.get $3 + local.get $3 + local.get $4 f64.mul f64.add f64.const 2 @@ -1998,14 +1987,14 @@ f64.sub else f64.const 0.7853981633974483 - local.get $1 - local.get $1 - f64.add local.get $3 + local.get $3 + f64.add + local.get $4 f64.mul f64.const 6.123233995736766e-17 local.get $0 - local.get $1 + local.get $3 i64.reinterpret_f64 i64.const -4294967296 i64.and @@ -2014,7 +2003,7 @@ local.get $0 f64.mul f64.sub - local.get $1 + local.get $3 local.get $0 f64.add f64.div @@ -2031,7 +2020,7 @@ f64.sub end local.set $0 - local.get $4 + local.get $2 i32.const 31 i32.shr_u if @@ -2043,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 @@ -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 @@ -2120,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 @@ -2136,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 @@ -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 @@ -3053,26 +3030,22 @@ (local $3 i32) (local $4 i32) block $folding-inner0 - i32.const 1 local.get $0 local.get $0 f32.ne local.get $1 local.get $1 f32.ne - select + i32.or if local.get $1 local.get $0 f32.add return end - local.get $0 - i32.reinterpret_f32 - local.set $3 local.get $1 i32.reinterpret_f32 - local.tee $4 + local.tee $3 i32.const 1065353216 i32.eq if @@ -3080,12 +3053,14 @@ call $~lib/math/NativeMathf.atan return end - local.get $4 + local.get $3 i32.const 30 i32.shr_u i32.const 2 i32.and - local.get $3 + local.get $0 + i32.reinterpret_f32 + local.tee $4 i32.const 31 i32.shr_u i32.or @@ -3093,11 +3068,7 @@ local.get $4 i32.const 2147483647 i32.and - local.set $4 - local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 + local.tee $4 i32.eqz if block $break|0 @@ -3117,14 +3088,17 @@ return end end - local.get $4 + local.get $3 + i32.const 2147483647 + i32.and + local.tee $3 i32.eqz br_if $folding-inner0 - local.get $4 + local.get $3 i32.const 2139095040 i32.eq if - local.get $3 + local.get $4 i32.const 2139095040 i32.eq if (result f32) @@ -3158,19 +3132,18 @@ end return end - i32.const 1 - local.get $3 + local.get $4 i32.const 2139095040 i32.eq - local.get $3 local.get $4 + local.get $3 i32.const 218103808 i32.add i32.gt_u - select + i32.or br_if $folding-inner0 - local.get $4 local.get $3 + local.get $4 i32.const 218103808 i32.add i32.gt_u @@ -3227,35 +3200,16 @@ i32.and select ) - (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 +3217,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 +3346,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 +3367,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 +3375,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 +3392,38 @@ f64.mul local.get $3 f64.mul - local.set $4 + local.set $7 local.get $3 local.get $0 f64.promote_f32 local.tee $6 local.get $6 f64.add - local.tee $8 - local.get $4 + local.tee $3 + local.get $7 f64.add f64.mul local.get $6 - local.get $4 + local.get $7 f64.add - local.get $4 + local.get $7 f64.add f64.div - local.tee $3 - local.get $3 + local.tee $7 + local.get $7 f64.mul - local.get $3 + local.get $7 f64.mul - local.set $4 + local.set $8 + local.get $7 local.get $3 local.get $8 - local.get $4 f64.add f64.mul local.get $6 - local.get $4 + local.get $8 f64.add - local.get $4 + local.get $8 f64.add f64.div f32.demote_f64 @@ -3451,15 +3436,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 +3452,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 +3464,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 +3511,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 +3558,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 +3569,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 +3693,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 +3722,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 +3734,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 +3755,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 +3783,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 +3806,7 @@ f64.add return end - local.get $5 + local.get $4 i32.const 2146435072 i32.ge_u if @@ -3837,26 +3822,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 +3849,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 +3866,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 +3880,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 +3897,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 +3936,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 +3952,7 @@ f64.sub f64.sub local.set $3 - local.get $6 + local.get $4 local.get $0 local.get $3 f64.sub @@ -3984,12 +3969,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 +4001,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 +4060,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 +4099,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 +4114,8 @@ f64.mul f64.add f64.mul + local.get $1 local.get $3 - local.get $4 f64.mul f64.sub f64.add @@ -4139,7 +4124,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 +4133,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 +4164,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 +4221,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 +4272,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 +4351,7 @@ end unreachable end - local.get $2 + local.get $5 i32.const 2139095040 i32.ge_u if @@ -4376,93 +4361,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 +4459,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 +4467,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 +4514,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 +4553,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 +4575,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 +4608,7 @@ local.get $0 return end - local.get $7 + local.get $4 if f64.const -1 return @@ -4638,13 +4623,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 +4641,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 +4676,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 +4704,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 +4756,7 @@ f64.sub return end - local.get $3 + local.get $1 i32.const 1 i32.eq if @@ -4779,7 +4764,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 +4774,7 @@ return end local.get $0 - local.get $1 + local.get $2 f64.sub f64.const 2 f64.mul @@ -4797,25 +4782,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 +4809,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 +4822,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 +4882,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 +4897,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 +4907,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 +4924,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 +4946,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 +4959,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 +4969,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 +5099,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 +5137,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 +5180,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 +5198,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 +5234,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 +5246,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 +5297,7 @@ f32.sub return end - local.get $3 + local.get $1 i32.const 1 i32.eq if @@ -5322,7 +5305,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 +5315,7 @@ return end local.get $0 - local.get $1 + local.get $2 f32.sub f32.const 2 f32.mul @@ -5340,24 +5323,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 +5351,7 @@ local.get $0 local.get $4 f32.mul - local.get $3 + local.get $1 i32.const 128 i32.eq select @@ -5380,21 +5362,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 +5391,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 +5431,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 +5544,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 +5579,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 +5593,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 +5608,7 @@ end i32.const 0 local.get $3 - local.get $5 + local.get $4 i64.const 1 i64.shl i64.const -9143996093422370816 @@ -5635,10 +5616,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 +5631,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 +5681,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 +5728,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 +5748,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 +5764,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 +5804,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,206 +5853,207 @@ 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 $7 f64) + (local $5 i64) + (local $6 i64) + (local $7 i32) (local $8 i32) (local $9 f64) (local $10 f64) (local $11 f64) + (local $12 f64) + (local $13 f64) local.get $1 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and - local.tee $2 + local.tee $5 local.get $0 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and - local.tee $3 + local.tee $4 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.get $1 - return + local.get $4 + local.get $5 + local.set $4 + local.set $5 end - local.get $3 + local.get $5 f64.reinterpret_i64 + local.tee $9 local.set $0 - i64.const 0 - local.get $2 - local.get $3 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 2047 - i32.eq - select - i64.eqz - if - local.get $0 - return - end - local.get $8 - local.get $6 - i32.sub - i32.const 64 - i32.gt_s - if - local.get $0 + block $__inlined_func$~lib/math/NativeMath.hypot + local.get $5 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $7 + i32.const 2047 + i32.eq + br_if $__inlined_func$~lib/math/NativeMath.hypot + local.get $4 + f64.reinterpret_i64 + local.tee $1 + local.set $0 + local.get $5 + i64.eqz + local.get $4 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $8 + i32.const 2047 + i32.eq + i32.or + br_if $__inlined_func$~lib/math/NativeMath.hypot local.get $1 + local.get $9 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.set $0 + local.get $8 + local.get $7 + i32.sub + i32.const 64 + i32.gt_s + br_if $__inlined_func$~lib/math/NativeMath.hypot + f64.const 1 + local.set $0 + local.get $8 + 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 $0 + local.get $1 + f64.const 1.90109156629516e-211 f64.mul local.set $1 - local.get $0 - f64.const 5260135901548373507240989e186 + local.get $9 + f64.const 1.90109156629516e-211 f64.mul else - local.get $0 + local.get $7 + i32.const 573 + i32.lt_u + if (result f64) + f64.const 1.90109156629516e-211 + local.set $0 + local.get $1 + f64.const 5260135901548373507240989e186 + f64.mul + local.set $1 + local.get $9 + f64.const 5260135901548373507240989e186 + f64.mul + else + local.get $9 + end end + local.set $9 + local.get $1 + local.get $1 + local.get $1 + f64.const 134217729 + f64.mul + local.tee $10 + f64.sub + local.get $10 + f64.add + local.tee $10 + f64.sub + local.set $12 + local.get $9 + local.get $9 + local.get $9 + f64.const 134217729 + f64.mul + local.tee $11 + f64.sub + local.get $11 + f64.add + local.tee $11 + f64.sub + local.set $13 + local.get $0 + local.get $11 + local.get $11 + f64.mul + local.get $9 + local.get $9 + f64.mul + local.tee $0 + f64.sub + local.get $11 + local.get $11 + f64.add + local.get $13 + f64.add + local.get $13 + f64.mul + f64.add + local.get $10 + local.get $10 + f64.mul + local.get $1 + local.get $1 + f64.mul + local.tee $1 + f64.sub + local.get $10 + local.get $10 + f64.add + local.get $12 + f64.add + local.get $12 + f64.mul + f64.add + f64.add + local.get $0 + f64.add + local.get $1 + f64.add + f64.sqrt + f64.mul + local.set $0 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) (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 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 + local.get $4 f32.reinterpret_i32 local.set $0 - local.get $4 + local.get $5 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 @@ -6081,55 +6062,50 @@ 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.get $4 i32.const 1568669696 i32.ge_u if (result f32) - f32.const 1237940039285380274899124e3 - local.set $8 - local.get $1 + local.get $0 f32.const 8.077935669463161e-28 f32.mul - local.set $1 - local.get $0 + local.set $0 + local.get $1 f32.const 8.077935669463161e-28 f32.mul + local.set $1 + f32.const 1237940039285380274899124e3 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.get $1 + local.get $0 f32.const 1237940039285380274899124e3 f32.mul - local.set $1 - local.get $0 + local.set $0 + local.get $1 f32.const 1237940039285380274899124e3 f32.mul + local.set $1 + f32.const 8.077935669463161e-28 else - local.get $0 + f32.const 1 end end - local.set $0 - local.get $8 local.get $0 f64.promote_f32 local.tee $7 @@ -6149,375 +6125,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 - 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 $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 $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) + (func $std/math/test_log10f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) (local $4 f32) - (local $5 f32) - (local $6 i32) + (local $5 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 $5 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 $4 + local.get $4 + f32.mul + local.set $8 + local.get $3 + i32.const 23 + i32.shr_u + i32.const 127 + i32.sub + local.get $5 + 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 $4 + 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 +6517,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 +6598,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 +6616,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 +6651,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 +6659,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 +6744,7 @@ f64.add f64.mul f64.add - local.get $6 + local.get $7 f64.add end ) @@ -6790,16 +6776,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 +6904,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 +6920,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 +6955,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 +7120,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $1 f32.abs f32.const 1 @@ -7154,31 +7136,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 +7172,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 +7388,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.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 $2 - local.get $2 - i64.const 4604531861337669632 - i64.sub - local.tee $8 - i64.const -4503599627370496 + local.get $6 + i64.const 2047 i64.and + i64.const 958 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 + 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 +7835,7 @@ if f64.const -1 f64.const 1 - local.get $12 + local.get $5 select local.get $3 i32.const 969 @@ -7885,21 +7844,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 +7876,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 +7890,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 +7955,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 +7973,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 +7991,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 +8030,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 +8060,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 +8121,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 +8138,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 +8156,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 +8166,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 +8178,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 +8216,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 +8241,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 +8262,7 @@ local.tee $0 f32.div local.get $0 - local.get $4 + local.get $7 i32.const 31 i32.shr_u select @@ -8304,8 +8274,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 +8299,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 +8328,7 @@ i32.const 1 i32.eq select - local.set $6 + local.set $4 local.get $2 i32.const 2147483647 i32.and @@ -8386,14 +8355,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 +8371,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 +8423,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 +8479,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 +8689,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 +8715,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 +8741,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 +8764,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 +8802,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 +8822,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 +8834,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 +8857,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 +8930,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 +8955,7 @@ i32.const 255 i32.eq i32.const 1 - local.get $4 + local.get $7 i32.const 1 i32.shl select @@ -9021,7 +8980,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 +9002,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 +9039,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 +9059,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 +9071,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 +9090,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 +9102,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 +9176,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 +9198,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 +9211,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 +9230,7 @@ f64.add return end - local.get $5 + local.get $4 i32.const 2146435072 i32.ge_u if @@ -9295,26 +9246,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 +9273,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 +9290,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 +9304,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 +9321,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 +9360,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 +9376,7 @@ f64.sub f64.sub local.set $3 - local.get $6 + local.get $4 local.get $0 local.get $3 f64.sub @@ -9442,12 +9393,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 +9425,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 +9494,7 @@ f64.add f64.mul local.get $3 - local.get $4 + local.get $7 f64.mul f64.sub f64.add @@ -9558,7 +9509,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 +9537,7 @@ f64.mul f64.sub f64.mul - local.get $4 + local.get $7 f64.sub local.get $1 f64.const -0.16666666666666632 @@ -9597,36 +9548,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 +9586,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 +9642,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 +9674,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 +9738,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 +9771,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 +9798,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 +9950,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 +9988,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 @@ -10065,18 +10016,21 @@ (local $4 f64) (local $5 i32) (local $6 i64) - block $__inlined_func$~lib/math/NativeMath.sinh (result f64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $6 - f64.reinterpret_i64 - local.set $3 - f64.const 0.5 - local.get $0 - f64.copysign - local.set $4 + (local $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 @@ -10085,46 +10039,46 @@ i32.const 1082535490 i32.lt_u if - local.get $3 + local.get $7 call $~lib/math/NativeMath.expm1 - local.set $3 + local.set $7 local.get $5 i32.const 1072693248 i32.lt_u if - local.get $0 local.get $5 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 $7 + local.get $7 f64.add - local.get $3 - local.get $3 + local.get $7 + local.get $7 f64.mul - local.get $3 + 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 $4 - local.get $3 - local.get $3 - local.get $3 + 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 $3 + local.get $7 f64.const 1416.0996898839683 f64.sub call $~lib/math/NativeMath.exp @@ -10136,7 +10090,9 @@ f64.mul f64.const 2247116418577894884661631e283 f64.mul + local.set $3 end + local.get $3 local.get $1 local.get $2 call $std/math/check @@ -10152,100 +10108,102 @@ ) (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) - block $__inlined_func$~lib/math/NativeMathf.sinh (result f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $5 - f32.reinterpret_i32 - local.set $3 - f32.const 0.5 - local.get $0 - f32.copysign - local.set $4 - local.get $5 + (local $4 i32) + (local $5 f32) + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $4 + f32.reinterpret_i32 + local.set $5 + f32.const 0.5 + local.get $0 + f32.copysign + local.set $3 + block $__inlined_func$~lib/math/NativeMathf.sinh + 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 f32.sub f32.mul + local.set $0 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 f32.add f32.mul + local.set $0 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 f32.mul f32.const 1661534994731144841129758e11 f32.mul + local.set $0 end + local.get $0 local.get $1 local.get $2 call $std/math/check ) (func $~lib/math/tan_kern (param $0 f64) (param $1 f64) (param $2 i32) (result f64) - (local $3 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 +10227,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 +10259,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 +10288,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 +10307,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 +10329,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 +10366,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 +10410,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 +10444,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 +10461,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 +10475,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 +10494,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 +10530,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 +10563,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 +10592,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 +10623,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 +10655,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 +10770,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 +10927,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 +10937,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 +10971,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 +11005,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 +11045,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 +11094,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 +11129,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 +11172,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 +11185,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 +11207,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 +11224,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 +11243,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 +11254,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 +11266,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 +11284,7 @@ f64.mul f64.add f64.mul - local.get $1 + local.get $0 f64.const 0 f64.mul f64.sub @@ -11337,7 +11293,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 +11313,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 +11340,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 +11357,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 +11371,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 +11388,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 +11427,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 +11460,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 +11492,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 +11546,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 +11579,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 +11597,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 +11657,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 +11675,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 +11718,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 +12168,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 @@ -18610,19 +18566,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 +18579,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 +18592,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 +18605,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 +18618,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 +18631,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 +18644,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 +18657,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 +18670,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 +18683,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 +18696,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 +18709,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 +18722,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 +18735,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 +18748,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 +18761,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 +18774,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 +18787,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 +18800,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 +18813,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 +28953,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 +28967,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 +28981,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 +28995,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 +29009,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 +29023,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 +29037,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 +29051,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 +29065,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 +29079,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 +29093,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 +29107,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 +29121,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 +29135,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 +29149,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 +29163,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 +29177,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 +29191,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 +29205,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 +29219,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 +29233,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 +29247,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 +29261,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 +29275,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 +29289,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 +29303,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 +29317,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 +29331,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 +29345,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 +29359,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 +29373,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 +30430,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 +30443,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 +30456,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 +30469,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 +30482,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 +30495,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 +30508,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 +30521,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 +30534,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 +30547,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 +30560,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 +30573,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 +30586,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 +30599,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 +30612,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 +30625,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 +30638,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 +30651,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 +30664,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 +30677,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 +30690,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 +30703,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 +30716,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 +30729,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 +30742,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 +30755,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 +30768,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 +30781,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 +30794,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 +30807,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 +30820,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 +30833,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 +30846,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 +30859,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 +30872,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 +30885,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 +44059,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 i64.const 17 i64.shr_u - local.get $2 + local.get $6 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 +44091,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 +44130,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 +44161,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/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/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..27e13d7352 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 @@ -838,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 - global.set $~lib/rt/itcms/iter - br $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 - 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.const 1 + global.set $~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 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -885,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1105,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 @@ -1123,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 @@ -1139,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 @@ -1209,7 +1051,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1246,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 @@ -1263,17 +1105,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 +1128,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 @@ -1303,15 +1145,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 +1180,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 $1 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 +1204,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $1 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 @@ -1404,8 +1246,8 @@ i32.load offset=8 local.set $3 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 @@ -1434,64 +1276,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 $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 $4 - local.get $1 + local.get $2 + 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 +1357,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 +1368,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index 6d70ba6747..3478dd091c 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)) @@ -1546,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/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 4f82e9c7b1..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 @@ -43,7 +44,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 @@ -55,73 +56,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -130,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/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.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index 4e367f31bb..2c34b2475b 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 @@ -897,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 @@ -944,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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 + 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) (result i32) (local $1 i32) @@ -1164,9 +1006,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 +1024,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 +1040,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 @@ -1253,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 @@ -1270,17 +1112,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 +1135,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 +1152,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,22 +1187,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1369,19 +1211,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1441,13 +1283,14 @@ local.get $1 i32.const 20 i32.add + local.tee $0 local.tee $1 i32.const 0 i32.store8 local.get $1 i32.const 8 i32.add - local.tee $0 + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1458,12 +1301,12 @@ local.get $1 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 @@ -1471,12 +1314,12 @@ local.get $1 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 $1 + local.get $0 ) (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1669,360 +1512,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 +1890,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 +1972,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 +3246,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 +3309,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 +3467,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index 332ef7d2e2..34dfb694fb 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)) @@ -1600,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/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..8015b7a575 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 @@ -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 @@ -232,30 +230,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 +266,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 +281,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 +311,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 +348,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 +358,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 +496,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -537,7 +507,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -557,44 +527,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 +573,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -614,20 +583,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 +624,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 +651,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 +668,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 +697,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -740,7 +709,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -777,8 +746,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 @@ -855,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 @@ -902,271 +944,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1244,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 $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - 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 $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - 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) @@ -1482,18 +1273,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1504,54 +1294,51 @@ call $~lib/builtins/abort unreachable end + local.get $5 + 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 - 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 +1346,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 +1364,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1585,9 +1372,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 +1385,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 +1400,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 +1418,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 + local.set $3 + local.get $2 global.get $~lib/rt/itcms/white local.get $1 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,68 +1508,185 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if + 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.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 + i32.store8 local.get $0 - i32.const 20 + local.get $1 + i32.add + local.tee $3 + i32.const 1 i32.sub - i32.load offset=4 + 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 - 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 + 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 3 - i32.eq - select + i32.const 32 + i32.ge_u if local.get $1 - call $~lib/rt/itcms/Object#makeGray + 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/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) @@ -1819,7 +1723,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 +1731,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 +1739,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 +1753,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 @@ -1894,7 +1798,7 @@ i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -1907,30 +1811,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 @@ -1948,6 +1858,7 @@ local.get $0 i32.load local.get $1 + local.tee $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -1957,26 +1868,26 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 15 i32.shr_u + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 13 i32.shr_u + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 16 i32.shr_u + local.get $1 i32.xor - local.tee $4 + local.tee $3 local.get $0 i32.load offset=4 i32.and @@ -1984,38 +1895,38 @@ i32.shl i32.add i32.load - local.set $2 + 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 $1 i32.load offset=4 - local.tee $3 + 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.load8_u + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + 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 $2 + local.set $1 end - local.get $2 + local.get $1 i32.eqz if local.get $0 @@ -2049,21 +1960,21 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $1 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 - i32.add - local.tee $2 local.get $1 + i32.add + local.tee $1 + local.get $2 i32.store8 local.get $0 local.get $0 @@ -2071,12 +1982,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $2 + local.get $1 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -2085,7 +1996,7 @@ i32.load i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store end ) @@ -2102,17 +2013,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 +2169,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 +2196,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 +2207,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 +2218,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 +2232,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 +2262,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 +2287,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 +2298,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 +2309,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 +2323,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 +2349,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 +2374,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 +2385,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 +2396,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 +2410,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 +2447,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 +2566,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 +2629,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 +2640,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 +2658,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 @@ -2805,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 @@ -2822,14 +2704,14 @@ if i32.const 1456 i32.const 1616 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable end local.get $0 i32.load - local.set $4 + local.set $7 local.get $1 i32.const 8 local.get $1 @@ -2838,34 +2720,33 @@ select local.get $2 i32.shl - local.set $1 - block $__inlined_func$~lib/rt/itcms/__renew (result i32) + local.set $6 + block $__inlined_func$~lib/rt/itcms/__renew local.get $3 - if (result i32) - local.get $8 + if + local.get $4 i32.const 1 i32.shl - local.tee $2 + local.tee $1 i32.const 1073741820 - local.get $2 + local.get $1 i32.const 1073741820 i32.lt_u select - local.tee $2 - local.get $1 + local.tee $1 + local.get $6 local.get $1 - local.get $2 - i32.lt_u + local.get $6 + i32.gt_u select - else - local.get $1 + local.set $6 end - local.tee $6 - local.get $4 - local.tee $2 + local.get $6 + local.get $7 + local.tee $1 i32.const 20 i32.sub - local.tee $1 + local.tee $2 i32.load i32.const -4 i32.and @@ -2873,80 +2754,78 @@ i32.sub i32.le_u if - local.get $1 + local.get $2 local.get $6 i32.store offset=16 - local.get $2 br $__inlined_func$~lib/rt/itcms/__renew end local.get $6 - local.get $1 + local.get $2 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $9 local.set $3 local.get $6 - local.get $1 + local.get $2 i32.load offset=16 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 local.get $6 i32.gt_u select - local.set $7 + local.set $8 block $~lib/util/memory/memmove|inlined.0 local.get $3 - local.get $2 - local.tee $1 + local.tee $2 + local.get $1 i32.eq br_if $~lib/util/memory/memmove|inlined.0 local.get $1 - local.get $3 + local.get $2 i32.sub - local.get $7 + local.get $8 i32.sub i32.const 0 - local.get $7 + local.get $8 i32.const 1 i32.shl i32.sub i32.le_u if - local.get $3 + local.get $2 local.get $1 - local.get $7 + local.get $8 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end local.get $1 - local.get $3 + local.get $2 i32.gt_u if local.get $1 i32.const 7 i32.and - local.get $3 + local.get $2 i32.const 7 i32.and i32.eq if loop $while-continue|0 - local.get $3 + local.get $2 i32.const 7 i32.and if - local.get $7 + local.get $8 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 - local.get $3 + local.set $8 + local.get $2 local.tee $5 i32.const 1 i32.add - local.set $3 + local.set $2 local.get $1 local.tee $4 i32.const 1 @@ -2960,22 +2839,22 @@ end end loop $while-continue|1 - local.get $7 + local.get $8 i32.const 8 i32.ge_u if - local.get $3 + local.get $2 local.get $1 i64.load i64.store - local.get $7 + local.get $8 i32.const 8 i32.sub - local.set $7 - local.get $3 + local.set $8 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2985,13 +2864,13 @@ end end loop $while-continue|2 - local.get $7 + local.get $8 if - local.get $3 + local.get $2 local.tee $5 i32.const 1 i32.add - local.set $3 + local.set $2 local.get $1 local.tee $4 i32.const 1 @@ -3001,10 +2880,10 @@ local.get $4 i32.load8_u i32.store8 - local.get $7 + local.get $8 i32.const 1 i32.sub - local.set $7 + local.set $8 br $while-continue|2 end end @@ -3012,29 +2891,29 @@ local.get $1 i32.const 7 i32.and - local.get $3 + local.get $2 i32.const 7 i32.and i32.eq if loop $while-continue|3 - local.get $3 - local.get $7 + local.get $2 + local.get $8 i32.add i32.const 7 i32.and if - local.get $7 + local.get $8 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $7 + local.get $8 i32.const 1 i32.sub - local.tee $7 + local.tee $8 + local.get $2 i32.add local.get $1 - local.get $7 + local.get $8 i32.add i32.load8_u i32.store8 @@ -3042,18 +2921,18 @@ end end loop $while-continue|4 - local.get $7 + local.get $8 i32.const 8 i32.ge_u if - local.get $3 - local.get $7 + local.get $8 i32.const 8 i32.sub - local.tee $7 + local.tee $8 + local.get $2 i32.add local.get $1 - local.get $7 + local.get $8 i32.add i64.load i64.store @@ -3062,16 +2941,16 @@ end end loop $while-continue|5 - local.get $7 + local.get $8 if - local.get $3 - local.get $7 + local.get $8 i32.const 1 i32.sub - local.tee $7 + local.tee $8 + local.get $2 i32.add local.get $1 - local.get $7 + local.get $8 i32.add i32.load8_u i32.store8 @@ -3080,17 +2959,11 @@ end end end - local.get $9 + local.get $3 + local.set $1 end - local.tee $1 - local.get $8 - i32.add - local.get $6 - local.get $8 - i32.sub - call $~lib/memory/memory.fill local.get $1 - local.get $2 + local.get $7 i32.ne if local.get $0 @@ -3099,9 +2972,12 @@ local.get $0 local.get $1 i32.store offset=4 - 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 end local.get $0 local.get $6 @@ -3121,7 +2997,7 @@ if i32.const 1248 i32.const 1616 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -3153,7 +3029,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3183,23 +3059,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 @@ -3258,14 +3134,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 +3161,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -3296,9 +3172,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 +3186,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 +3225,28 @@ 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 $1 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 $1 + local.tee $3 i32.extend8_s i32.const -1028477379 i32.mul @@ -3373,62 +3256,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 if i32.const 0 i32.const 1568 @@ -3437,14 +3320,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $1 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 $1 + local.tee $3 i32.extend8_s i32.const -1028477379 i32.mul @@ -3454,62 +3338,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3519,14 +3405,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 $4 i32.load offset=20 i32.const 100 i32.ne @@ -3539,18 +3425,19 @@ unreachable end i32.const 50 - local.set $0 + local.set $1 loop $for-loop|3 - local.get $0 + local.get $1 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 $1 + local.tee $3 i32.extend8_s i32.const -1028477379 i32.mul @@ -3560,62 +3447,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3625,14 +3514,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $1 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 $1 + local.tee $3 i32.extend8_s i32.const -1028477379 i32.mul @@ -3642,62 +3532,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3707,14 +3599,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 $4 i32.load offset=20 i32.const 100 i32.ne @@ -3727,10 +3619,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3739,17 +3628,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $7 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 - local.set $10 - local.get $2 - i32.load offset=16 - local.tee $11 local.set $5 - local.get $1 + local.get $4 + i32.load offset=16 + local.tee $3 + local.set $9 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -3758,139 +3647,143 @@ 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 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 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 $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 $1 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 $3 - local.get $6 + local.get $10 + 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 $10 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $11 i32.store offset=4 - local.get $3 - local.get $8 + local.get $10 + local.get $1 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 $7 + local.get $10 i32.store loop $for-loop|0 - local.get $7 - local.get $11 - i32.lt_s + local.get $3 + local.get $8 + i32.gt_s if - local.get $7 + local.get $8 i32.const 3 i32.shl - local.get $10 + 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 $3 - local.get $0 + 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_s call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 end - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|0 end end - local.get $3 - local.get $0 + local.get $10 + local.get $2 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 - local.get $0 + 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 $3 + local.get $6 + local.get $10 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 $10 i32.load offset=12 - local.get $4 + local.get $0 i32.gt_s if - local.get $3 - local.get $4 + local.get $10 + local.get $0 call $~lib/array/Array#__get - local.tee $6 + 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 @@ -3900,67 +3793,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 i32.const 15 i32.shr_u - local.get $0 + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 i32.const 13 i32.shr_u - local.get $0 + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.set $0 - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 + local.tee $1 i32.const 16 i32.shr_u - local.get $0 + local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $1 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 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 $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 + local.get $5 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3970,21 +3860,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $3 - local.get $4 + local.get $10 + 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 $4 i32.load offset=20 i32.ne if @@ -3996,18 +3886,19 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|6 - local.get $4 + local.get $0 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 $0 + local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4017,36 +3908,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -4054,9 +3945,9 @@ 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 @@ -4065,14 +3956,16 @@ 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 + local.set $2 end - local.get $0 + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4082,14 +3975,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $0 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 $0 + local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4099,36 +3993,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -4136,9 +4030,9 @@ 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 @@ -4147,14 +4041,14 @@ 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 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -4163,14 +4057,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 $4 i32.load offset=20 i32.const 50 i32.ne @@ -4183,18 +4077,19 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|8 - local.get $4 + local.get $0 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 $0 + local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4204,36 +4099,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -4241,9 +4136,9 @@ 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 @@ -4252,14 +4147,14 @@ 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 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -4268,14 +4163,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $0 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 $0 + local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4285,36 +4181,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -4322,9 +4218,9 @@ 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 @@ -4333,14 +4229,16 @@ 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 + local.set $2 end - local.get $0 + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4350,14 +4248,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $0 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 $0 + local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4367,36 +4266,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -4404,9 +4303,9 @@ 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 @@ -4415,14 +4314,14 @@ 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 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -4431,14 +4330,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 $4 i32.load offset=20 i32.const 50 i32.ne @@ -4450,9 +4349,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 +4409,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 +4417,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 +4425,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 +4439,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 @@ -4584,7 +4485,7 @@ i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -4597,30 +4498,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 @@ -4638,6 +4545,7 @@ local.get $0 i32.load local.get $1 + local.tee $2 i32.const 255 i32.and i32.const -1028477379 @@ -4648,26 +4556,26 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 15 i32.shr_u + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 13 i32.shr_u + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 16 i32.shr_u + local.get $1 i32.xor - local.tee $4 + local.tee $3 local.get $0 i32.load offset=4 i32.and @@ -4675,38 +4583,38 @@ i32.shl i32.add i32.load - local.set $2 + 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 $1 i32.load offset=4 - local.tee $3 + 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.load8_u + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + 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 $2 + local.set $1 end - local.get $2 + local.get $1 i32.eqz if local.get $0 @@ -4740,21 +4648,21 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $1 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 - i32.add - local.tee $2 local.get $1 + i32.add + local.tee $1 + local.get $2 i32.store8 local.get $0 local.get $0 @@ -4762,12 +4670,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $2 + local.get $1 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -4776,7 +4684,7 @@ i32.load i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store end ) @@ -4788,7 +4696,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4819,23 +4727,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 @@ -4894,14 +4802,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 +4829,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -4948,28 +4856,29 @@ 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 $1 i32.const 255 i32.and 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 $1 + local.tee $3 i32.const 255 i32.and i32.const -1028477379 @@ -4980,62 +4889,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 if i32.const 0 i32.const 1568 @@ -5044,14 +4953,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $1 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 $1 + local.tee $3 i32.const 255 i32.and i32.const -1028477379 @@ -5062,62 +4972,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5127,14 +5039,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 $4 i32.load offset=20 i32.const 100 i32.ne @@ -5147,19 +5059,20 @@ 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 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $1 + local.tee $3 i32.const 255 i32.and i32.const -1028477379 @@ -5170,62 +5083,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5235,14 +5150,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $1 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 $1 + local.tee $3 i32.const 255 i32.and i32.const -1028477379 @@ -5253,62 +5169,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5318,14 +5236,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 $4 i32.load offset=20 i32.const 100 i32.ne @@ -5338,10 +5256,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -5350,17 +5265,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $7 i32.const 0 i32.store - local.get $2 - i32.load offset=8 - local.set $10 - local.get $2 - i32.load offset=16 - local.tee $11 + local.get $4 + i32.load offset=8 local.set $5 - local.get $1 + local.get $4 + i32.load offset=16 + local.tee $3 + local.set $9 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -5369,139 +5284,143 @@ 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 $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 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 $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 $1 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 $3 - local.get $6 + local.get $10 + 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 $10 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $11 i32.store offset=4 - local.get $3 - local.get $8 + local.get $10 + local.get $1 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 $7 + local.get $10 i32.store loop $for-loop|0 - local.get $7 - local.get $11 - i32.lt_s + local.get $3 + local.get $8 + i32.gt_s if - local.get $7 + local.get $8 i32.const 3 i32.shl - local.get $10 + 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 $3 - local.get $0 + 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 - local.get $0 - i32.const 1 - i32.add - local.set $0 end - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|0 end end - local.get $3 - local.get $0 + local.get $10 + local.get $2 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 - local.get $0 + 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 $3 + local.get $6 + local.get $10 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 $10 i32.load offset=12 - local.get $4 + local.get $0 i32.gt_s if - local.get $3 - local.get $4 + local.get $10 + local.get $0 call $~lib/array/Array#__get - local.tee $6 + local.set $2 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $2 i32.const 255 i32.and i32.const -1028477379 @@ -5512,67 +5431,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 i32.const 15 i32.shr_u - local.get $0 + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 i32.const 13 i32.shr_u - local.get $0 + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.set $0 - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 + local.tee $1 i32.const 16 i32.shr_u - local.get $0 + local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $1 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 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 $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 + local.get $5 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5582,21 +5498,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $3 - local.get $4 + local.get $10 + 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 $4 i32.load offset=20 i32.ne if @@ -5608,19 +5524,20 @@ 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 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $0 + local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -5631,36 +5548,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -5668,9 +5585,9 @@ 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 @@ -5679,14 +5596,16 @@ 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 + local.set $2 end - local.get $0 + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5696,14 +5615,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $0 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 $0 + local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -5714,36 +5634,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -5751,9 +5671,9 @@ 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 @@ -5762,14 +5682,14 @@ 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 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -5778,14 +5698,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 $4 i32.load offset=20 i32.const 50 i32.ne @@ -5798,19 +5718,20 @@ 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 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $0 + local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -5821,36 +5742,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -5858,9 +5779,9 @@ 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 @@ -5869,14 +5790,14 @@ 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 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -5885,14 +5806,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $0 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 $0 + local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -5903,36 +5825,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -5940,9 +5862,9 @@ 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 @@ -5951,14 +5873,16 @@ 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 + local.set $2 end - local.get $0 + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5968,14 +5892,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $0 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 $0 + local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -5986,36 +5911,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -6023,9 +5948,9 @@ 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 @@ -6034,14 +5959,14 @@ 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 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -6050,14 +5975,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 $4 i32.load offset=20 i32.const 50 i32.ne @@ -6069,9 +5994,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 @@ -6129,7 +6054,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 +6062,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 +6070,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 +6084,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 @@ -6204,7 +6129,7 @@ i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -6217,30 +6142,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 @@ -6258,6 +6189,7 @@ local.get $0 i32.load local.get $1 + local.tee $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -6267,26 +6199,26 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 15 i32.shr_u + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 13 i32.shr_u + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 16 i32.shr_u + local.get $1 i32.xor - local.tee $4 + local.tee $3 local.get $0 i32.load offset=4 i32.and @@ -6294,38 +6226,38 @@ i32.shl i32.add i32.load - local.set $2 + 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 $1 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and 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 - local.get $3 + 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 $2 + local.set $1 end - local.get $2 + local.get $1 i32.eqz if local.get $0 @@ -6359,21 +6291,21 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $1 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 - i32.add - local.tee $2 local.get $1 + i32.add + local.tee $1 + local.get $2 i32.store16 local.get $0 local.get $0 @@ -6381,12 +6313,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $2 + local.get $1 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -6395,7 +6327,7 @@ i32.load i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store end ) @@ -6412,7 +6344,7 @@ if i32.const 1248 i32.const 1616 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -6446,7 +6378,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -6478,23 +6410,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 @@ -6553,14 +6485,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 +6512,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -6607,27 +6539,28 @@ 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 $1 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 $1 + local.tee $3 i32.extend16_s i32.const -1028477379 i32.mul @@ -6637,62 +6570,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 if i32.const 0 i32.const 1568 @@ -6701,14 +6634,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $1 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 $1 + local.tee $3 i32.extend16_s i32.const -1028477379 i32.mul @@ -6718,62 +6652,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -6783,14 +6719,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 $4 i32.load offset=20 i32.const 100 i32.ne @@ -6803,18 +6739,19 @@ unreachable end i32.const 50 - local.set $0 + local.set $1 loop $for-loop|3 - local.get $0 + local.get $1 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 $1 + local.tee $3 i32.extend16_s i32.const -1028477379 i32.mul @@ -6824,62 +6761,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -6889,14 +6828,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $1 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 $1 + local.tee $3 i32.extend16_s i32.const -1028477379 i32.mul @@ -6906,62 +6846,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -6971,14 +6913,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 $4 i32.load offset=20 i32.const 100 i32.ne @@ -6991,10 +6933,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -7003,17 +6942,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $7 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 - local.set $10 - local.get $2 - i32.load offset=16 - local.tee $11 local.set $5 - local.get $1 + local.get $4 + i32.load offset=16 + local.tee $3 + local.set $9 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -7022,141 +6961,145 @@ 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 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 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 $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 $1 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 $3 - local.get $6 + local.get $10 + 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 $10 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $11 i32.store offset=4 - local.get $3 - local.get $8 + local.get $10 + local.get $1 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 $7 + local.get $10 i32.store loop $for-loop|0 - local.get $7 - local.get $11 - i32.lt_s + local.get $3 + local.get $8 + i32.gt_s if - local.get $7 + local.get $8 i32.const 3 i32.shl - local.get $10 + 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 $3 - local.get $0 + 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_s call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 end - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|0 end end - local.get $3 - local.get $0 + local.get $10 + local.get $2 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 - local.get $0 + 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 $3 + local.get $6 + local.get $10 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 $10 i32.load offset=12 - local.get $4 + local.get $0 i32.gt_s if - local.get $3 - local.get $4 + local.get $10 + local.get $0 call $~lib/array/Array#__get - local.tee $6 + 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 @@ -7166,67 +7109,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 i32.const 15 i32.shr_u - local.get $0 + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 i32.const 13 i32.shr_u - local.get $0 + local.get $1 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 -1028477379 + i32.mul + local.tee $1 i32.const 16 i32.shr_u - local.get $0 + local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $1 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 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 $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 + local.get $5 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -7236,21 +7176,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $3 - local.get $4 + local.get $10 + 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 $4 i32.load offset=20 i32.ne if @@ -7262,18 +7202,19 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|6 - local.get $4 + local.get $0 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 $0 + local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7283,36 +7224,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -7320,9 +7261,9 @@ 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 @@ -7331,14 +7272,16 @@ 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 + local.set $2 end - local.get $0 + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -7348,14 +7291,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $0 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 $0 + local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7365,36 +7309,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -7402,9 +7346,9 @@ 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 @@ -7413,14 +7357,14 @@ 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 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -7429,14 +7373,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 $4 i32.load offset=20 i32.const 50 i32.ne @@ -7449,18 +7393,19 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|8 - local.get $4 + local.get $0 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 $0 + local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7470,36 +7415,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -7507,9 +7452,9 @@ 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 @@ -7518,14 +7463,14 @@ 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 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -7534,14 +7479,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $0 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 $0 + local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7551,36 +7497,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -7588,9 +7534,9 @@ 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 @@ -7599,14 +7545,16 @@ 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 + local.set $2 end - local.get $0 + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -7616,14 +7564,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $0 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 $0 + local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7633,36 +7582,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -7670,9 +7619,9 @@ 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 @@ -7681,14 +7630,14 @@ 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 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -7697,14 +7646,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 $4 i32.load offset=20 i32.const 50 i32.ne @@ -7716,9 +7665,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 +7725,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 +7733,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 +7741,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 +7755,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 @@ -7850,7 +7801,7 @@ i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -7863,30 +7814,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 @@ -7904,6 +7861,7 @@ local.get $0 i32.load local.get $1 + local.tee $2 i32.const 65535 i32.and i32.const -1028477379 @@ -7914,26 +7872,26 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 15 i32.shr_u + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 13 i32.shr_u + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 16 i32.shr_u + local.get $1 i32.xor - local.tee $4 + local.tee $3 local.get $0 i32.load offset=4 i32.and @@ -7941,38 +7899,38 @@ i32.shl i32.add i32.load - local.set $2 + 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 $1 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and 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 - local.get $3 + 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 $2 + local.set $1 end - local.get $2 + local.get $1 i32.eqz if local.get $0 @@ -8006,21 +7964,21 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $1 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 - i32.add - local.tee $2 local.get $1 + i32.add + local.tee $1 + local.get $2 i32.store16 local.get $0 local.get $0 @@ -8028,12 +7986,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $2 + local.get $1 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -8042,7 +8000,7 @@ i32.load i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store end ) @@ -8054,7 +8012,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -8087,23 +8045,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 @@ -8162,14 +8120,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 +8147,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -8216,28 +8174,29 @@ 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 $1 i32.const 65535 i32.and 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 $1 + local.tee $3 i32.const 65535 i32.and i32.const -1028477379 @@ -8248,62 +8207,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 if i32.const 0 i32.const 1568 @@ -8312,14 +8271,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $1 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 $1 + local.tee $3 i32.const 65535 i32.and i32.const -1028477379 @@ -8330,62 +8290,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -8395,14 +8357,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 $4 i32.load offset=20 i32.const 100 i32.ne @@ -8415,19 +8377,20 @@ 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 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $1 + local.tee $3 i32.const 65535 i32.and i32.const -1028477379 @@ -8438,62 +8401,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -8503,14 +8468,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $1 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 $1 + local.tee $3 i32.const 65535 i32.and i32.const -1028477379 @@ -8521,62 +8487,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $5 i32.const 15 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $5 i32.const 13 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $5 i32.const 16 i32.shr_u - local.get $1 + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $5 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $5 if - local.get $1 + 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 + 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 + local.set $5 end - local.get $1 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -8586,14 +8554,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 $4 i32.load offset=20 i32.const 100 i32.ne @@ -8606,10 +8574,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -8618,17 +8583,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $7 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 - local.set $10 - local.get $2 - i32.load offset=16 - local.tee $11 local.set $5 - local.get $1 + local.get $4 + i32.load offset=16 + local.tee $3 + local.set $9 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -8637,141 +8602,145 @@ 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 $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 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 $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 $1 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 $3 - local.get $6 + local.get $10 + 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 $10 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $11 i32.store offset=4 - local.get $3 - local.get $8 + local.get $10 + local.get $1 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 $7 + local.get $10 i32.store loop $for-loop|0 - local.get $7 - local.get $11 - i32.lt_s + local.get $3 + local.get $8 + i32.gt_s if - local.get $7 + local.get $8 i32.const 3 i32.shl - local.get $10 + 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 $3 - local.get $0 + 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 - local.get $0 - i32.const 1 - i32.add - local.set $0 end - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|0 end end - local.get $3 - local.get $0 + local.get $10 + local.get $2 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 - local.get $0 + 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 $3 + local.get $6 + local.get $10 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 $10 i32.load offset=12 - local.get $4 + local.get $0 i32.gt_s if - local.get $3 - local.get $4 + local.get $10 + local.get $0 call $~lib/array/Array#__get - local.tee $6 + local.set $2 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $2 i32.const 65535 i32.and i32.const -1028477379 @@ -8782,67 +8751,64 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 i32.const 15 i32.shr_u - local.get $0 + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 i32.const 13 i32.shr_u - local.get $0 + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.set $0 - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 + local.tee $1 i32.const 16 i32.shr_u - local.get $0 + local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $1 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 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 $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 + local.get $5 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -8852,21 +8818,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $3 - local.get $4 + local.get $10 + 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 $4 i32.load offset=20 i32.ne if @@ -8878,19 +8844,20 @@ 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 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $0 + local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -8901,36 +8868,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -8938,9 +8905,9 @@ 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 @@ -8949,14 +8916,16 @@ 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 + local.set $2 end - local.get $0 + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -8966,14 +8935,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $0 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 $0 + local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -8984,36 +8954,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -9021,9 +8991,9 @@ 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 @@ -9032,14 +9002,14 @@ 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 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -9048,14 +9018,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 $4 i32.load offset=20 i32.const 50 i32.ne @@ -9068,19 +9038,20 @@ 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 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $0 + local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -9091,36 +9062,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -9128,9 +9099,9 @@ 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 @@ -9139,14 +9110,14 @@ 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 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -9155,14 +9126,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $0 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 $0 + local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -9173,36 +9145,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -9210,9 +9182,9 @@ 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 @@ -9221,14 +9193,16 @@ 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 + local.set $2 end - local.get $0 + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -9238,14 +9212,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $0 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 $0 + local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -9256,36 +9231,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 i32.const 15 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 i32.const 13 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $2 i32.const 16 i32.shr_u - local.get $0 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -9293,9 +9268,9 @@ 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 @@ -9304,14 +9279,14 @@ 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 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -9320,14 +9295,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 $4 i32.load offset=20 i32.const 50 i32.ne @@ -9339,9 +9314,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 @@ -9399,7 +9374,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 +9382,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 +9390,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 +9404,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 @@ -9473,7 +9448,7 @@ i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -9486,30 +9461,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 @@ -9527,6 +9508,7 @@ local.get $0 i32.load local.get $1 + local.tee $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -9535,26 +9517,26 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 15 i32.shr_u + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 13 i32.shr_u + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 16 i32.shr_u + local.get $1 i32.xor - local.tee $4 + local.tee $3 local.get $0 i32.load offset=4 i32.and @@ -9562,36 +9544,36 @@ i32.shl i32.add i32.load - local.set $2 + 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 $1 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and 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 - local.get $3 + 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 $2 + local.set $1 end - local.get $2 + local.get $1 i32.eqz if local.get $0 @@ -9625,21 +9607,21 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $1 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 - i32.add - local.tee $2 local.get $1 + i32.add + local.tee $1 + local.get $2 i32.store local.get $0 local.get $0 @@ -9647,12 +9629,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $2 + local.get $1 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -9661,7 +9643,7 @@ i32.load i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store end ) @@ -9678,7 +9660,7 @@ if i32.const 1248 i32.const 1616 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -9712,7 +9694,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -9743,23 +9725,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 @@ -9816,14 +9798,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 +9825,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -9859,7 +9841,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -9870,24 +9851,24 @@ 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 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 i32.const -1028477379 @@ -9898,60 +9879,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 $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 +9941,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 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.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -9976,60 +9958,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 + local.set $0 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $3 local.get $0 - local.get $1 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 $0 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -10039,14 +10021,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 i32.add local.set $0 br $for-loop|0 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -10065,9 +10047,9 @@ 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 i32.const -1028477379 @@ -10078,60 +10060,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 $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 +10123,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 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.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10157,60 +10140,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 + local.set $0 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $3 local.get $0 - local.get $1 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 $0 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -10220,14 +10203,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 i32.add local.set $0 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -10240,10 +10223,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $7 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -10252,17 +10232,16 @@ 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 $4 i32.load offset=8 - local.set $10 - local.get $2 + local.set $9 + local.get $4 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.set $3 + local.get $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -10271,141 +10250,140 @@ i32.lt_s br_if $folding-inner0 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 16 i32.const 12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $6 i32.store - local.get $3 + local.get $6 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $6 i32.const 0 i32.store offset=4 - local.get $3 + local.get $6 i32.const 0 i32.store offset=8 - local.get $3 + local.get $6 i32.const 0 i32.store offset=12 - local.get $5 + 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 $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 $8 + local.tee $10 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $0 i32.store offset=4 local.get $6 - local.get $8 - call $~lib/memory/memory.fill - local.get $3 - local.get $6 + local.get $0 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 + local.get $0 + if + local.get $6 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $6 + local.get $0 i32.store offset=4 - local.get $3 - local.get $8 + local.get $6 + local.get $10 i32.store offset=8 + local.get $6 local.get $3 - local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $8 + local.get $6 i32.store - loop $for-loop|01 - local.get $7 - local.get $11 - i32.lt_s + loop $for-loop|02 + local.get $3 + local.get $5 + i32.gt_s if - local.get $7 + local.get $5 i32.const 3 i32.shl - local.get $10 + local.get $9 i32.add - local.tee $1 + local.tee $8 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 + local.get $2 + local.tee $0 + i32.const 1 + i32.add + local.set $2 + local.get $6 local.get $0 - local.get $1 + local.get $8 i32.load call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 end - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 - br $for-loop|01 + local.set $5 + br $for-loop|02 end end - local.get $3 - local.get $0 + local.get $6 + local.get $2 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 - 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 $3 + local.get $7 + local.get $6 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 $6 i32.load offset=12 - local.get $4 + local.get $1 i32.gt_s if - local.get $3 - local.get $4 + local.get $6 + local.get $1 call $~lib/array/Array#__get - local.tee $6 + local.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10414,65 +10392,65 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 - i32.mul - local.set $0 - local.get $2 + i32.mul + local.set $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 + local.get $2 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/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 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 $3 + local.get $2 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 $2 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.eqz if i32.const 0 @@ -10482,21 +10460,21 @@ call $~lib/builtins/abort unreachable end + local.get $0 + local.get $6 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 +10486,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,23 +10506,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 @@ -10558,19 +10536,19 @@ if local.get $0 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $1 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $3 + local.get $2 i32.const -2 i32.and local.set $0 @@ -10590,14 +10568,15 @@ 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 + local.tee $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10606,60 +10585,60 @@ 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 + local.set $1 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 local.get $0 + local.get $1 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $3 + local.get $2 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -10668,14 +10647,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 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 +10667,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,23 +10687,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 @@ -10738,19 +10717,19 @@ if local.get $0 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $1 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $3 + local.get $2 i32.const -2 i32.and local.set $0 @@ -10769,14 +10748,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,23 +10765,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 @@ -10816,19 +10795,19 @@ if local.get $0 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $1 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $3 + local.get $2 i32.const -2 i32.and local.set $0 @@ -10848,14 +10827,15 @@ 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 + local.tee $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10864,60 +10844,60 @@ 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 + local.set $1 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 local.get $0 + local.get $1 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $3 + local.get $2 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -10926,14 +10906,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 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 +10925,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 +10985,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 +10993,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 +11001,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 +11015,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 @@ -11079,7 +11059,7 @@ i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -11092,30 +11072,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 @@ -11133,6 +11119,7 @@ local.get $0 i32.load local.get $1 + local.tee $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11141,26 +11128,26 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 15 i32.shr_u + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 13 i32.shr_u + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $1 i32.const 16 i32.shr_u + local.get $1 i32.xor - local.tee $4 + local.tee $3 local.get $0 i32.load offset=4 i32.and @@ -11168,36 +11155,36 @@ i32.shl i32.add i32.load - local.set $2 + 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 $1 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and 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 - local.get $3 + 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 $2 + local.set $1 end - local.get $2 + local.get $1 i32.eqz if local.get $0 @@ -11231,21 +11218,21 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $1 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 - i32.add - local.tee $2 local.get $1 + i32.add + local.tee $1 + local.get $2 i32.store local.get $0 local.get $0 @@ -11253,12 +11240,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $2 + local.get $1 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -11267,7 +11254,7 @@ i32.load i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store end ) @@ -11279,7 +11266,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -11310,23 +11297,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 @@ -11383,14 +11370,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 +11397,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -11426,7 +11413,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -11437,24 +11423,24 @@ 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 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 i32.const -1028477379 @@ -11465,60 +11451,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 $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 +11513,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 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.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11543,60 +11530,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 + local.set $0 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $3 local.get $0 - local.get $1 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 $0 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -11606,14 +11593,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 i32.add local.set $0 br $for-loop|0 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -11632,9 +11619,9 @@ 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 i32.const -1028477379 @@ -11645,60 +11632,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 $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 +11695,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 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.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11724,60 +11712,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 + local.set $0 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $3 local.get $0 - local.get $1 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 $0 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -11787,14 +11775,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 i32.add local.set $0 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -11807,10 +11795,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $7 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -11819,17 +11804,16 @@ 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 $4 i32.load offset=8 - local.set $10 - local.get $2 + local.set $9 + local.get $4 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.set $3 + local.get $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -11838,141 +11822,140 @@ i32.lt_s br_if $folding-inner0 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 16 i32.const 14 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $6 i32.store - local.get $3 + local.get $6 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $6 i32.const 0 i32.store offset=4 - local.get $3 + local.get $6 i32.const 0 i32.store offset=8 - local.get $3 + local.get $6 i32.const 0 i32.store offset=12 - local.get $5 + 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 $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 $8 + local.tee $10 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $0 i32.store offset=4 local.get $6 - local.get $8 - call $~lib/memory/memory.fill - local.get $3 - local.get $6 + local.get $0 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 + local.get $0 + if + local.get $6 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $6 + local.get $0 i32.store offset=4 - local.get $3 - local.get $8 + local.get $6 + local.get $10 i32.store offset=8 + local.get $6 local.get $3 - local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 - i32.store - loop $for-loop|01 - local.get $7 - local.get $11 - i32.lt_s + local.get $8 + local.get $6 + i32.store + loop $for-loop|02 + local.get $3 + local.get $5 + i32.gt_s if - local.get $7 + local.get $5 i32.const 3 i32.shl - local.get $10 + local.get $9 i32.add - local.tee $1 + local.tee $8 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 + local.get $2 + local.tee $0 + i32.const 1 + i32.add + local.set $2 + local.get $6 local.get $0 - local.get $1 + local.get $8 i32.load call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 end - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 - br $for-loop|01 + local.set $5 + br $for-loop|02 end end - local.get $3 - local.get $0 + local.get $6 + local.get $2 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 - 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 $3 + local.get $7 + local.get $6 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 $6 i32.load offset=12 - local.get $4 + local.get $1 i32.gt_s if - local.get $3 - local.get $4 + local.get $6 + local.get $1 call $~lib/array/Array#__get - local.tee $6 + local.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11981,65 +11964,65 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.set $0 - local.get $2 + local.set $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 + local.get $2 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/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 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 $3 + local.get $2 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 $2 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.eqz if i32.const 0 @@ -12049,21 +12032,21 @@ call $~lib/builtins/abort unreachable end + local.get $0 + local.get $6 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 +12058,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,23 +12078,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 @@ -12125,19 +12108,19 @@ if local.get $0 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $1 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $3 + local.get $2 i32.const -2 i32.and local.set $0 @@ -12157,14 +12140,15 @@ 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 + local.tee $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12173,60 +12157,60 @@ 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 + local.set $1 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 local.get $0 + local.get $1 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $3 + local.get $2 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -12235,14 +12219,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 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 +12239,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,23 +12259,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 @@ -12305,19 +12289,19 @@ if local.get $0 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $1 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $3 + local.get $2 i32.const -2 i32.and local.set $0 @@ -12336,14 +12320,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,23 +12337,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 @@ -12383,19 +12367,19 @@ if local.get $0 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $1 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $3 + local.get $2 i32.const -2 i32.and local.set $0 @@ -12415,14 +12399,15 @@ 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 + local.tee $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12431,60 +12416,60 @@ 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 + local.set $1 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 local.get $0 + local.get $1 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $3 + local.get $2 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -12493,14 +12478,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 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 +12497,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 @@ -12565,23 +12550,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 @@ -12657,7 +12642,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 +12650,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 +12658,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 +12672,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 +12706,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 +12741,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 @@ -12818,25 +12809,25 @@ i32.const 668265263 i32.mul local.tee $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $2 - local.get $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul local.tee $2 - local.get $2 i32.const 16 i32.shr_u + local.get $2 i32.xor - local.tee $4 + local.tee $3 local.get $0 i32.load offset=4 i32.and @@ -12851,7 +12842,7 @@ if local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -12863,7 +12854,7 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + local.get $4 i32.const -2 i32.and local.set $2 @@ -12907,18 +12898,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 +12925,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -12960,7 +12951,7 @@ if i32.const 1248 i32.const 1616 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -12994,7 +12985,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -13036,23 +13027,23 @@ i32.const 668265263 i32.mul local.tee $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $2 - local.get $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul local.tee $2 - local.get $2 i32.const 16 i32.shr_u + local.get $2 i32.xor i32.and i32.const 2 @@ -13109,14 +13100,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 +13127,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/set/Set#rehash end ) @@ -13147,9 +13138,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 +13152,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 @@ -13175,13 +13172,13 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + (local $9 i64) (local $10 i32) (local $11 i32) (local $12 i32) @@ -13203,15 +13200,15 @@ i32.store offset=8 local.get $1 call $~lib/set/Set#constructor - local.tee $4 + local.tee $2 i32.store loop $for-loop|0 - local.get $3 + local.get $9 i64.const 100 i64.lt_s if - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -13221,11 +13218,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -13236,14 +13233,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $9 i64.const 1 i64.add - local.set $3 + local.set $9 br $for-loop|0 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -13256,14 +13253,14 @@ unreachable end i64.const 50 - local.set $3 + local.set $9 loop $for-loop|1 - local.get $3 + local.get $9 i64.const 100 i64.lt_s if - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -13274,11 +13271,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -13289,14 +13286,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $9 i64.const 1 i64.add - local.set $3 + local.set $9 br $for-loop|1 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -13309,8 +13306,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -13319,18 +13315,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 $2 i32.load offset=8 - local.set $11 - local.get $4 + local.set $4 + local.get $2 i32.load offset=16 - local.tee $12 - local.set $5 - local.get $1 - local.tee $2 + local.tee $3 + local.set $10 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -13346,133 +13341,132 @@ i32.const 16 i32.const 16 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $11 i32.store - local.get $1 + local.get $11 i32.const 0 i32.store - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 + local.get $11 i32.const 0 i32.store offset=4 - local.get $1 + local.get $11 i32.const 0 i32.store offset=8 - local.get $1 + local.get $11 i32.const 0 i32.store offset=12 - local.get $5 + local.get $10 i32.const 134217727 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 $5 + local.get $10 i32.const 8 - local.get $5 + local.get $10 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $12 i32.store offset=4 - local.get $6 - local.get $9 - call $~lib/memory/memory.fill - local.get $1 - local.get $6 + local.get $11 + 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 $11 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $12 i32.store offset=4 + local.get $11 local.get $1 - local.get $9 i32.store offset=8 - local.get $1 - local.get $5 + 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 $2 - local.get $1 + local.get $6 + local.get $11 i32.store - loop $for-loop|01 - local.get $8 - local.get $12 - i32.lt_s + loop $for-loop|02 + local.get $3 + local.get $7 + i32.gt_s if - local.get $8 + local.get $7 i32.const 4 i32.shl - local.get $11 + 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 $1 - 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 $8 + local.get $7 i32.const 1 i32.add - local.set $8 - br $for-loop|01 + local.set $7 + br $for-loop|02 end end - local.get $1 + local.get $11 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + 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 $1 + local.get $5 + local.get $11 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 $11 i32.load offset=12 - local.get $7 + local.get $8 i32.gt_s if - local.get $4 - local.get $1 - local.get $7 + local.get $2 + local.get $11 + local.get $8 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -13484,21 +13478,21 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - local.get $7 + local.get $0 + local.get $11 + local.get $8 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|2 end end - local.get $2 + local.get $0 i32.load offset=20 - local.get $4 + local.get $2 i32.load offset=20 i32.ne if @@ -13510,14 +13504,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $9 loop $for-loop|3 - local.get $3 + local.get $9 i64.const 50 i64.lt_s if - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -13528,11 +13522,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#delete - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -13542,14 +13536,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $9 i64.const 1 i64.add - local.set $3 + local.set $9 br $for-loop|3 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -13562,14 +13556,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $9 loop $for-loop|4 - local.get $3 + local.get $9 i64.const 50 i64.lt_s - if - local.get $4 - local.get $3 + if + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -13579,11 +13573,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -13594,11 +13588,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#delete - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -13608,14 +13602,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $9 i64.const 1 i64.add - local.set $3 + local.set $9 br $for-loop|4 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -13627,9 +13621,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 call $~lib/set/Set#clear - local.get $4 + local.get $2 i32.load offset=20 if i32.const 0 @@ -13680,23 +13674,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 @@ -13772,7 +13766,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 +13774,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 +13782,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 +13796,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 +13830,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 +13865,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 @@ -13933,25 +13933,25 @@ i32.const 668265263 i32.mul local.tee $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $2 - local.get $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul local.tee $2 - local.get $2 i32.const 16 i32.shr_u + local.get $2 i32.xor - local.tee $4 + local.tee $3 local.get $0 i32.load offset=4 i32.and @@ -13966,7 +13966,7 @@ if local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -13978,7 +13978,7 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + local.get $4 i32.const -2 i32.and local.set $2 @@ -14022,18 +14022,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 +14049,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -14070,7 +14070,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -14112,23 +14112,23 @@ i32.const 668265263 i32.mul local.tee $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $2 - local.get $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul local.tee $2 - local.get $2 i32.const 16 i32.shr_u + local.get $2 i32.xor i32.and i32.const 2 @@ -14185,14 +14185,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,7 +14212,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/set/Set#rehash end ) @@ -14220,13 +14220,13 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + (local $9 i64) (local $10 i32) (local $11 i32) (local $12 i32) @@ -14248,15 +14248,15 @@ i32.store offset=8 local.get $1 call $~lib/set/Set#constructor - local.tee $4 + local.tee $2 i32.store loop $for-loop|0 - local.get $3 + local.get $9 i64.const 100 i64.lt_u if - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -14266,11 +14266,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -14281,14 +14281,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $9 i64.const 1 i64.add - local.set $3 + local.set $9 br $for-loop|0 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -14301,14 +14301,14 @@ unreachable end i64.const 50 - local.set $3 + local.set $9 loop $for-loop|1 - local.get $3 + local.get $9 i64.const 100 i64.lt_u if - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -14319,11 +14319,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -14334,14 +14334,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $9 i64.const 1 i64.add - local.set $3 + local.set $9 br $for-loop|1 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -14354,8 +14354,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -14364,18 +14363,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 $2 i32.load offset=8 - local.set $11 - local.get $4 + local.set $4 + local.get $2 i32.load offset=16 - local.tee $12 - local.set $5 - local.get $1 - local.tee $2 + local.tee $3 + local.set $10 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -14391,133 +14389,132 @@ i32.const 16 i32.const 18 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $11 i32.store - local.get $1 + local.get $11 i32.const 0 i32.store - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 + local.get $11 i32.const 0 i32.store offset=4 - local.get $1 + local.get $11 i32.const 0 i32.store offset=8 - local.get $1 + local.get $11 i32.const 0 i32.store offset=12 - local.get $5 + local.get $10 i32.const 134217727 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 $5 + local.get $10 i32.const 8 - local.get $5 + local.get $10 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $12 i32.store offset=4 - local.get $6 - local.get $9 - call $~lib/memory/memory.fill - local.get $1 - local.get $6 + local.get $11 + 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 $11 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $12 i32.store offset=4 + local.get $11 local.get $1 - local.get $9 i32.store offset=8 - local.get $1 - local.get $5 + 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 $2 - local.get $1 + local.get $6 + local.get $11 i32.store - loop $for-loop|01 - local.get $8 - local.get $12 - i32.lt_s + loop $for-loop|02 + local.get $3 + local.get $7 + i32.gt_s if - local.get $8 + local.get $7 i32.const 4 i32.shl - local.get $11 + 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 $1 - 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 $8 + local.get $7 i32.const 1 i32.add - local.set $8 - br $for-loop|01 + local.set $7 + br $for-loop|02 end end - local.get $1 + local.get $11 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + 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 $1 + local.get $5 + local.get $11 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 $11 i32.load offset=12 - local.get $7 + local.get $8 i32.gt_s if - local.get $4 - local.get $1 - local.get $7 + local.get $2 + local.get $11 + local.get $8 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -14529,21 +14526,21 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - local.get $7 + local.get $0 + local.get $11 + local.get $8 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|2 end end - local.get $2 + local.get $0 i32.load offset=20 - local.get $4 + local.get $2 i32.load offset=20 i32.ne if @@ -14555,14 +14552,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $9 loop $for-loop|3 - local.get $3 + local.get $9 i64.const 50 i64.lt_u if - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -14573,11 +14570,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#delete - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -14587,14 +14584,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $9 i64.const 1 i64.add - local.set $3 + local.set $9 br $for-loop|3 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -14607,14 +14604,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $9 loop $for-loop|4 - local.get $3 + local.get $9 i64.const 50 i64.lt_u if - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -14624,11 +14621,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -14639,11 +14636,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#delete - local.get $4 - local.get $3 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -14653,14 +14650,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $9 i64.const 1 i64.add - local.set $3 + local.set $9 br $for-loop|4 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -14672,9 +14669,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 call $~lib/set/Set#clear - local.get $4 + local.get $2 i32.load offset=20 if i32.const 0 @@ -14700,11 +14697,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 +14730,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 +14746,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 @@ -14808,7 +14805,7 @@ i32.and i32.const 2 i32.shl - local.get $7 + local.get $5 i32.add local.tee $9 i32.load @@ -14821,28 +14818,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 @@ -14872,25 +14875,25 @@ i32.const 668265263 i32.mul local.tee $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $2 - local.get $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul local.tee $2 - local.get $2 i32.const 16 i32.shr_u + local.get $2 i32.xor - local.tee $4 + local.tee $3 local.get $0 i32.load offset=4 i32.and @@ -14905,7 +14908,7 @@ if local.get $2 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -14917,7 +14920,7 @@ f32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + local.get $4 i32.const -2 i32.and local.set $2 @@ -14961,18 +14964,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 +14991,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -15009,7 +15012,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -15040,23 +15043,23 @@ i32.const 668265263 i32.mul local.tee $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $2 - local.get $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul local.tee $2 - local.get $2 i32.const 16 i32.shr_u + local.get $2 i32.xor i32.and i32.const 2 @@ -15113,14 +15116,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 +15143,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/set/Set#rehash end ) @@ -15157,7 +15160,6 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -15176,16 +15178,16 @@ i32.store offset=8 local.get $0 call $~lib/set/Set#constructor - local.tee $3 + local.tee $11 i32.store loop $for-loop|0 local.get $2 f32.const 100 f32.lt if - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15198,59 +15200,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 +15261,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $11 local.get $2 call $~lib/set/Set#add - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15277,59 +15279,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 +15348,7 @@ br $for-loop|0 end end - local.get $3 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -15365,9 +15367,9 @@ f32.const 100 f32.lt if - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15380,59 +15382,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 +15444,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $11 local.get $2 call $~lib/set/Set#add - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15460,59 +15462,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 +15531,7 @@ br $for-loop|1 end end - local.get $3 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -15542,8 +15544,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 @@ -15552,17 +15553,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $3 i32.const 0 i32.store - local.get $3 + local.get $11 i32.load offset=8 - local.set $11 - local.get $3 + local.set $8 + local.get $11 i32.load offset=16 - local.tee $12 - local.set $5 - local.get $0 + local.set $7 + local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -15571,105 +15571,102 @@ 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 - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.store - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__link - 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 $5 + local.get $7 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 $5 + local.get $7 i32.const 8 - local.get $5 + local.get $7 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 - call $~lib/memory/memory.fill - local.get $4 - local.get $6 + local.get $5 i32.store - local.get $4 - local.get $6 - call $~lib/rt/itcms/__link - local.get $4 + local.get $5 + if + local.get $6 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $6 + local.get $5 i32.store offset=4 - local.get $4 - local.get $9 + local.get $6 + local.get $0 i32.store offset=8 - local.get $4 - local.get $5 + 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 $0 - local.get $4 + local.get $3 + local.get $6 i32.store - loop $for-loop|01 - local.get $8 - local.get $12 - i32.lt_s + loop $for-loop|02 + local.get $7 + 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 $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 $5 - f32.load - local.set $2 - local.get $4 + local.get $6 i32.load offset=12 local.get $0 i32.le_u @@ -15680,24 +15677,24 @@ if i32.const 1248 i32.const 1616 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 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 $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 @@ -15706,19 +15703,19 @@ local.get $2 f32.store end - local.get $8 + local.get $10 i32.const 1 i32.add - local.set $8 - br $for-loop|01 + local.set $10 + 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 @@ -15726,19 +15723,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 $7 + local.get $9 i32.gt_s if - local.get $4 - local.get $7 + local.get $6 + local.get $9 call $~lib/array/Array#__get local.tee $2 i32.reinterpret_f32 @@ -15751,64 +15749,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 $11 i32.load - local.get $3 + local.get $11 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 $1 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 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 $1 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 $1 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.eqz if i32.const 0 @@ -15818,22 +15816,22 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.get $4 - local.get $7 + local.get $3 + local.get $6 + local.get $9 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $7 + local.get $9 i32.const 1 i32.add - local.set $7 + local.set $9 br $for-loop|2 end end - local.get $1 - i32.load offset=20 local.get $3 i32.load offset=20 + local.get $11 + i32.load offset=20 i32.ne if i32.const 0 @@ -15850,9 +15848,9 @@ f32.const 50 f32.lt if - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15865,59 +15863,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 +15925,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $11 local.get $2 call $~lib/set/Set#delete - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15945,59 +15943,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 +16011,7 @@ br $for-loop|3 end end - local.get $3 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -16032,9 +16030,9 @@ f32.const 50 f32.lt if - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -16047,59 +16045,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 +16106,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $11 local.get $2 call $~lib/set/Set#add - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -16126,59 +16124,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 +16186,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $11 local.get $2 call $~lib/set/Set#delete - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -16206,59 +16204,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 +16272,7 @@ br $for-loop|4 end end - local.get $3 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -16286,9 +16284,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $11 call $~lib/set/Set#clear - local.get $3 + local.get $11 i32.load offset=20 if i32.const 0 @@ -16342,23 +16340,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 @@ -16401,12 +16399,12 @@ (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 +16433,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 +16441,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 +16449,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 +16487,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 +16499,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 +16534,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,14 +16576,14 @@ ) (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 + local.tee $3 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16589,7 +16593,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $4 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16601,25 +16605,25 @@ i32.const 668265263 i32.mul local.tee $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $2 - local.get $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul local.tee $2 - local.get $2 i32.const 16 i32.shr_u + local.get $2 i32.xor - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 i32.and @@ -16634,7 +16638,7 @@ if local.get $2 i32.load offset=8 - local.tee $3 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -16646,7 +16650,7 @@ f64.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + local.get $5 i32.const -2 i32.and local.set $2 @@ -16690,18 +16694,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 +16721,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -16738,7 +16742,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -16753,15 +16757,15 @@ ) (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) (local $2 i32) - (local $3 i32) - (local $4 i64) + (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 $4 + local.tee $3 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16771,7 +16775,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $4 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16783,23 +16787,23 @@ i32.const 668265263 i32.mul local.tee $2 - local.get $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul local.tee $2 - local.get $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul local.tee $2 - local.get $2 i32.const 16 i32.shr_u + local.get $2 i32.xor i32.and i32.const 2 @@ -16813,7 +16817,7 @@ if local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -16825,7 +16829,7 @@ f64.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + local.get $4 i32.const -2 i32.and local.set $2 @@ -16856,14 +16860,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 +16887,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/set/Set#rehash end ) @@ -16891,8 +16895,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) @@ -16919,15 +16923,15 @@ i32.store offset=8 local.get $1 call $~lib/set/Set#constructor - local.tee $4 + local.tee $3 i32.store loop $for-loop|0 - local.get $3 + local.get $4 f64.const 100 f64.lt if - local.get $4 local.get $3 + local.get $4 call $~lib/set/Set#has if i32.const 0 @@ -16937,11 +16941,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 - call $~lib/set/Set#add local.get $4 + call $~lib/set/Set#add local.get $3 + local.get $4 call $~lib/set/Set#has i32.eqz if @@ -16952,14 +16956,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 $4 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -16972,14 +16976,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 $4 local.get $3 + local.get $4 call $~lib/set/Set#has i32.eqz if @@ -16990,11 +16994,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 - call $~lib/set/Set#add local.get $4 + call $~lib/set/Set#add local.get $3 + local.get $4 call $~lib/set/Set#has i32.eqz if @@ -17005,14 +17009,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 $4 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -17025,8 +17029,7 @@ 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 @@ -17035,18 +17038,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 $4 + local.get $3 i32.load offset=8 - local.set $11 - local.get $4 + local.set $6 + local.get $3 i32.load offset=16 - local.tee $12 - local.set $5 - local.get $1 - local.tee $0 + local.tee $5 + local.set $11 + local.get $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -17062,168 +17064,166 @@ i32.const 16 i32.const 22 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 i32.store - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 + local.get $2 i32.const 0 i32.store offset=4 - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 0 i32.store offset=12 - local.get $5 + local.get $11 i32.const 134217727 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 $5 + local.get $11 i32.const 8 - local.get $5 + local.get $11 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $12 i32.store offset=4 - local.get $6 - local.get $9 - call $~lib/memory/memory.fill - local.get $1 - local.get $6 + local.get $2 + 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 $2 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $12 i32.store offset=4 + local.get $2 local.get $1 - local.get $9 i32.store offset=8 - local.get $1 - 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 $0 - local.get $1 + local.get $8 + local.get $2 i32.store - loop $for-loop|01 - local.get $8 - local.get $12 - i32.lt_s + loop $for-loop|02 + local.get $5 + local.get $9 + i32.gt_s if - local.get $8 + local.get $9 i32.const 4 i32.shl - local.get $11 + local.get $6 i32.add - local.tee $5 + local.tee $1 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $2 - local.tee $0 + local.get $1 + f64.load + local.set $4 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $5 - f64.load - local.set $3 - local.get $1 + local.set $0 + local.get $2 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 i32.const 1248 i32.const 1616 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - local.get $0 i32.const 1 i32.add - local.tee $5 + local.tee $8 i32.const 3 i32.const 1 call $~lib/array/ensureCapacity - local.get $1 - local.get $5 + local.get $2 + local.get $8 i32.store offset=12 end - local.get $1 + 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 $8 + local.get $9 i32.const 1 i32.add - local.set $8 - br $for-loop|01 + local.set $9 + br $for-loop|02 end end - local.get $1 local.get $2 + local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - 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 $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 $1 + local.get $2 i32.load offset=12 - local.get $7 + local.get $10 i32.gt_s if - local.get $4 - local.get $1 - local.get $7 + local.get $3 + local.get $2 + local.get $10 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -17236,20 +17236,20 @@ unreachable end local.get $0 - local.get $1 - local.get $7 + local.get $2 + local.get $10 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $7 + local.get $10 i32.const 1 i32.add - local.set $7 + local.set $10 br $for-loop|2 end end local.get $0 i32.load offset=20 - local.get $4 + local.get $3 i32.load offset=20 i32.ne if @@ -17261,14 +17261,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 $4 local.get $3 + local.get $4 call $~lib/set/Set#has i32.eqz if @@ -17279,11 +17279,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 - call $~lib/set/Set#delete local.get $4 + call $~lib/set/Set#delete local.get $3 + local.get $4 call $~lib/set/Set#has if i32.const 0 @@ -17293,14 +17293,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 $4 + local.get $3 i32.load offset=20 i32.const 50 i32.ne @@ -17313,14 +17313,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 $4 local.get $3 + local.get $4 call $~lib/set/Set#has if i32.const 0 @@ -17330,11 +17330,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 - call $~lib/set/Set#add local.get $4 + call $~lib/set/Set#add local.get $3 + local.get $4 call $~lib/set/Set#has i32.eqz if @@ -17345,11 +17345,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 - call $~lib/set/Set#delete local.get $4 + call $~lib/set/Set#delete local.get $3 + local.get $4 call $~lib/set/Set#has if i32.const 0 @@ -17359,14 +17359,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 $4 + local.get $3 i32.load offset=20 i32.const 50 i32.ne @@ -17378,9 +17378,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 call $~lib/set/Set#clear - local.get $4 + local.get $3 i32.load offset=20 if i32.const 0 @@ -17404,6 +17404,7 @@ unreachable ) (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) block $folding-inner1 block $folding-inner0 block $invalid @@ -17425,7 +17426,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 +17434,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 @@ -17521,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 @@ -17546,7 +17558,7 @@ if i32.const 1456 i32.const 1504 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -17555,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) @@ -17599,9 +17608,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 +17622,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 +17676,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 +17690,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 +17744,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 +17758,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 +17812,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 +17826,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 +17880,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 +17894,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 +17948,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 +17962,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 +18016,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 +18030,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 +18084,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 +18098,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 +18152,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 +18166,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 +18220,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 +18234,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 +18255,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/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 6fb03112b3..c58528fe3e 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)) @@ -1554,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 @@ -4177,7 +4182,7 @@ if i32.const 432 i32.const 592 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -4221,14 +4226,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 +4274,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4319,7 +4320,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -5243,7 +5244,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -5289,7 +5290,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -6215,7 +6216,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -6261,7 +6262,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -7185,7 +7186,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -7231,7 +7232,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -8155,7 +8156,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -8201,7 +8202,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -9113,7 +9114,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -9159,7 +9160,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -10088,7 +10089,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -10134,7 +10135,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -11064,7 +11065,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -11110,7 +11111,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -12024,7 +12025,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -12070,7 +12071,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -13001,7 +13002,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -13047,7 +13048,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -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 @@ -14121,7 +14123,7 @@ if i32.const 432 i32.const 480 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -14132,10 +14134,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 +14246,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -14266,10 +14268,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 +14474,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -14494,10 +14496,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 +14702,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -14722,10 +14724,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 +14930,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -14950,10 +14952,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 +15158,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -15178,10 +15180,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 +15386,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -15406,10 +15408,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 +15614,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -15634,10 +15636,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 +15842,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -15862,10 +15864,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 +16070,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -16090,10 +16092,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 +16298,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -16318,10 +16320,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 6b6ce45d59..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 @@ -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 @@ -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 @@ -270,30 +268,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 +304,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 +319,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 +349,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 +386,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 +396,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 +534,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -575,7 +545,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -595,44 +565,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 +611,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -652,20 +621,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 +662,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 +689,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 +706,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 +735,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -778,7 +747,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -815,8 +784,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 @@ -893,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 @@ -940,271 +982,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1243,218 +1210,42 @@ i32.const -1 local.get $2 i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 343 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - 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 $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - 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 $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - 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 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 end end ) @@ -1471,17 +1262,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 +1418,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 +1445,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 +1456,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 +1467,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 +1481,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 +1511,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 +1536,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 +1547,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 +1558,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 +1572,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 +1598,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 +1623,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 +1634,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 +1645,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 +1659,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 +1696,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 +1815,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 +1878,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 +1889,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 +1907,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 @@ -2179,7 +1942,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $6 + local.tee $5 i32.load i32.const -4 i32.and @@ -2188,17 +1951,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 $7 + local.set $4 local.get $1 - local.tee $3 i32.const 1073741804 i32.ge_u if @@ -2215,12 +1977,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 @@ -2236,14 +1998,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 @@ -2254,18 +2016,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.set $6 local.get $1 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -2276,46 +2037,28 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $6 + 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 $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $1 + select + local.tee $7 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 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 i32.const 4 - local.get $5 + local.get $6 i32.load offset=1568 local.get $2 i32.const 16 @@ -2324,6 +2067,21 @@ i32.sub i32.ne i32.shl + 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 + local.get $7 + local.get $7 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -2331,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 @@ -2348,7 +2106,7 @@ unreachable end end - local.get $5 + local.get $6 local.get $2 i32.const 16 i32.shl @@ -2356,10 +2114,10 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $5 - local.get $1 + local.get $6 + local.get $7 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $2 i32.eqz if i32.const 0 @@ -2370,11 +2128,11 @@ unreachable end end - local.get $4 + local.get $2 i32.load i32.const -4 i32.and - local.get $1 + local.get $7 i32.lt_u if i32.const 0 @@ -2384,16 +2142,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $6 + local.get $2 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 + i32.load + local.set $3 + local.get $7 i32.const 4 i32.add i32.const 15 @@ -2406,115 +2161,287 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $7 i32.sub local.tee $8 i32.const 16 i32.ge_u if - local.get $1 - local.get $4 + local.get $2 + local.get $3 i32.const 2 i32.and + local.get $7 + i32.or + i32.store + local.get $7 local.get $2 + i32.const 4 + i32.add + i32.add + local.tee $3 + local.get $8 + i32.const 4 + i32.sub + i32.const 1 i32.or i32.store + local.get $6 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $3 + 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 $4 + i32.store offset=12 + 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 $2 + global.get $~lib/rt/itcms/white + local.get $3 + i32.or + i32.store offset=4 + local.get $2 + local.get $4 + i32.store offset=8 + local.get $4 + local.get $4 + i32.load offset=4 + i32.const 3 + i32.and + local.get $2 + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $4 + 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 - i32.const 4 - i32.add + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $3 i32.add - local.tee $4 - local.get $8 + local.tee $6 i32.const 4 i32.sub - i32.const 1 - i32.or + i32.const 0 i32.store - local.get $5 - local.get $4 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $4 - i32.const -2 - i32.and + 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 $1 + 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.add - local.get $1 - i32.load - i32.const -4 i32.and + i32.const 24 i32.add - local.tee $4 - local.get $4 - i32.load - i32.const -3 - i32.and - i32.store + 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 $7 - i32.store offset=12 - local.get $1 - local.get $3 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace + local.get $5 + i32.load offset=16 local.tee $2 - i32.load offset=8 - local.set $4 - local.get $1 - global.get $~lib/rt/itcms/white - local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - local.get $4 - local.get $4 - 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/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $4 - local.get $3 - call $~lib/memory/memory.fill - local.get $3 - local.get $6 - i32.load offset=16 - local.tee $1 - local.get $1 - local.get $3 - i32.gt_u + i32.lt_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 @@ -2547,7 +2474,7 @@ i32.and i32.eq if - loop $while-continue|0 + loop $while-continue|00 local.get $1 i32.const 7 i32.and @@ -2560,20 +2487,20 @@ 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 + br $while-continue|00 end end loop $while-continue|1 @@ -2605,17 +2532,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 @@ -2702,70 +2629,59 @@ (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 $3 + local.tee $2 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 - i32.const 18 + i32.const 19 i32.const 48 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 + 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 $4 - call $~lib/rt/itcms/__renew local.tee $1 - i32.add - local.get $4 + call $~lib/rt/itcms/__renew + local.tee $2 local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $1 - local.get $2 i32.ne if local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $1 + local.get $2 i32.store offset=4 - local.get $1 - local.tee $2 + local.get $2 if local.get $0 i32.eqz @@ -2804,11 +2720,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 +2733,7 @@ end end local.get $0 - local.get $4 + local.get $1 i32.store offset=8 end ) @@ -2830,7 +2745,7 @@ if i32.const 1472 i32.const 1536 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -2851,7 +2766,7 @@ if i32.const 1472 i32.const 1536 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -2872,7 +2787,7 @@ if i32.const 1472 i32.const 1536 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -2906,7 +2821,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 +2829,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 +3208,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/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 627fe6d822..d10cb3566b 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 @@ -1588,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 @@ -3781,7 +3786,7 @@ if i32.const 560 i32.const 512 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -3825,14 +3830,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 +3883,7 @@ if i32.const 448 i32.const 512 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -3918,7 +3919,7 @@ if i32.const 448 i32.const 512 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3964,7 +3965,7 @@ if i32.const 448 i32.const 512 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4000,7 +4001,7 @@ if i32.const 448 i32.const 512 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4046,7 +4047,7 @@ if i32.const 448 i32.const 512 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4082,7 +4083,7 @@ if i32.const 448 i32.const 512 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4128,7 +4129,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 c065279b3b..f98edcb496 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -3,14 +3,14 @@ (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 (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)) @@ -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 @@ -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 @@ -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 @@ -405,30 +403,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 +439,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 +454,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 +484,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 +521,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 +531,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 +669,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -710,7 +680,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -730,44 +700,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 +746,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -787,20 +756,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 +797,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 +824,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 +841,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 +870,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -913,7 +882,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -950,8 +919,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,50 +1035,123 @@ 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) - 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 + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + 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 @@ -1125,226 +1167,152 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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) + (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 +1390,11 @@ 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 @@ -1447,52 +1407,49 @@ 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 +1457,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 +1474,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 +1500,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -1553,13 +1510,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.get $3 i32.const 4 i32.add i32.const 15 @@ -1575,7 +1532,7 @@ local.get $2 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub local.tee $4 i32.const 16 @@ -1585,23 +1542,23 @@ local.get $2 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.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -1625,297 +1582,295 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) - (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 $2 + local.tee $0 i32.add - local.tee $1 + 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 $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + 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 $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $1 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + 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 $1 + local.tee $3 i32.add - local.set $0 - local.get $2 - local.get $1 - 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) - (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 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $3 - i32.load offset=8 - local.set $1 - local.get $2 - global.get $~lib/rt/itcms/white - local.get $3 - i32.or - i32.store offset=4 - 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 - local.get $3 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1928,17 +1883,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 +2039,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 +2066,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 +2077,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 +2088,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 +2102,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 +2132,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 +2157,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 +2168,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 +2179,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 +2193,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 +2219,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 +2244,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 +2255,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 +2266,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 +2280,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2362,138 +2317,144 @@ 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.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 - 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 + local.get $0 i32.const 2 i32.add - local.set $1 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 + local.tee $0 local.get $1 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 local.get $0 @@ -2503,7 +2464,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2511,51 +2472,17 @@ 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 - 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 - 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 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2572,7 +2499,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 +2510,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 +2528,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,64 +2743,20 @@ end end ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/staticarray/StaticArray#__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 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 + 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/array/Array#__get (param $0 i32) (param $1 i32) (result i32) @@ -2884,7 +2767,7 @@ if i32.const 1088 i32.const 1776 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -2901,6 +2784,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -2923,7 +2807,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 @@ -2935,73 +2819,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -3010,7 +2892,9 @@ 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) @@ -3113,238 +2997,17 @@ 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) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $start:std/staticarray~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result 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 - 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 12 - 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 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $4 - 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 - br $__inlined_func$~lib/util/string/joinStringArray - end - loop $for-loop|0 - local.get $0 - local.get $5 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $5 - 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 $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 $6 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $7 - i32.mul - local.get $3 - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=8 - i32.const 0 - local.set $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 $4 - i32.add - i32.load - local.tee $3 - i32.store offset=4 - local.get $3 - if - local.get $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $3 - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $3 - i32.add - local.set $2 - end - local.get $7 - if - local.get $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $7 - i32.add - local.set $2 - 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 $4 - i32.add - i32.load - local.tee $1 - i32.store offset=4 - local.get $1 - if - local.get $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - ) - (func $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.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 @@ -3390,13 +3053,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 +3281,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 +3415,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 +3438,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -3787,7 +3450,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -3812,8 +3475,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 +3490,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 +3501,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 $3 - local.get $4 + local.get $1 + local.get $1 + local.get $3 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 +3595,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 +3621,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -3963,50 +3632,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 +3691,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 +3717,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 +3731,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 +3763,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 +3791,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 +3810,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -4147,13 +3822,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 +3839,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 +3858,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,104 +3883,102 @@ (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 + 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/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 - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return 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 +3991,24 @@ (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 f32) + (local $12 f64) (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) global.get $~lib/memory/__stack_pointer i32.const 32 i32.sub @@ -4338,19 +4019,19 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $21 i64.const 0 i64.store - local.get $1 + local.get $21 i64.const 0 i64.store offset=8 - local.get $1 + local.get $21 i64.const 0 i64.store offset=16 - local.get $1 + local.get $21 i64.const 0 i64.store offset=24 - local.get $1 + local.get $21 i32.const 1056 i32.store i32.const 1056 @@ -4507,17 +4188,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $21 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $1 + local.get $21 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $21 i32.store - local.get $1 + local.get $21 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -4532,9 +4213,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $21 i32.store - local.get $1 + local.get $21 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4549,9 +4230,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $21 i32.store - local.get $1 + local.get $21 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 7 @@ -4566,9 +4247,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $21 i32.store - local.get $1 + local.get $21 i32.const 20 i32.sub i32.load offset=16 @@ -4586,16 +4267,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $21 i32.store - local.get $1 + local.get $21 i32.const 8 call $~lib/staticarray/StaticArray#__set global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $21 i32.store - local.get $1 + local.get $21 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 8 @@ -4611,17 +4292,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $21 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $1 + local.get $21 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $21 i32.store - local.get $1 + local.get $21 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4638,33 +4319,24 @@ i32.const 8 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $21 i32.store offset=4 - local.get $1 + local.get $21 + i32.const 0 call $std/staticarray/Ref#constructor - local.tee $3 - i32.store - local.get $1 - local.get $3 + call $~lib/staticarray/StaticArray#__uset + local.get $21 i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 call $std/staticarray/Ref#constructor - local.tee $3 - i32.store offset=4 - local.get $1 - local.get $3 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 + call $~lib/staticarray/StaticArray#__uset + local.get $21 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 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4673,25 +4345,22 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $22 i32.const 0 i32.store - local.get $1 + local.get $22 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $22 i32.store - local.get $1 - i32.const 12 - call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $22 i32.store offset=4 - local.get $1 + local.get $22 i32.const 20 i32.sub i32.load offset=16 @@ -4708,17 +4377,17 @@ unreachable end loop $for-loop|0 - local.get $1 + local.get $22 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 $22 local.get $1 - local.get $0 call $~lib/staticarray/StaticArray#__get if i32.const 0 @@ -4728,10 +4397,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 @@ -4745,11 +4414,11 @@ global.get $~lib/memory/__stack_pointer local.get $1 call $~lib/staticarray/StaticArray.fromArray - local.tee $0 + local.tee $21 i32.store offset=4 local.get $1 i32.load offset=12 - local.get $0 + local.get $21 i32.const 20 i32.sub i32.load offset=16 @@ -4767,14 +4436,14 @@ loop $for-loop|1 local.get $1 i32.load offset=12 - local.get $2 + local.get $0 i32.gt_s if + local.get $21 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 +4454,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 @@ -4803,9 +4472,9 @@ i32.store local.get $1 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,29 +4492,29 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 1856 i32.const 8 call $~lib/memory/memory.copy - local.get $1 + 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 $0 + local.tee $21 i32.const 1888 i32.const 4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $21 i32.store offset=12 - local.get $1 local.get $0 + local.get $21 call $~lib/staticarray/StaticArray.concat - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4865,25 +4534,25 @@ i32.const 0 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $21 i32.const 1920 i32.const 0 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $21 i32.store offset=12 - local.get $1 local.get $0 + local.get $21 call $~lib/staticarray/StaticArray.concat - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4913,9 +4582,9 @@ i32.const 0 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $2 + local.tee $21 i32.store offset=4 - local.get $2 + local.get $21 i32.const 20 i32.sub i32.load offset=16 @@ -4951,19 +4620,19 @@ local.get $1 local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $3 + local.set $22 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $22 i32.store - local.get $2 + local.get $21 local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $4 + local.set $23 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $23 i32.store offset=12 - local.get $3 - local.get $4 + local.get $22 + local.get $23 call $~lib/string/String.__eq i32.eqz if @@ -5007,15 +4676,15 @@ local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $2 + local.set $21 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $2 + local.tee $22 + local.get $21 i32.store - local.get $3 + local.get $22 i32.const 1984 i32.store offset=12 - local.get $2 + local.get $21 i32.const 1984 call $~lib/string/String.__eq i32.eqz @@ -5032,10 +4701,10 @@ call $~lib/staticarray/StaticArray<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $21 local.get $0 i32.store - local.get $2 + local.get $21 i32.const 2016 i32.store offset=12 local.get $0 @@ -5157,10 +4826,10 @@ call $~lib/staticarray/StaticArray<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $21 local.get $0 i32.store - local.get $2 + local.get $21 i32.const 2080 i32.store offset=12 local.get $0 @@ -5201,9 +4870,9 @@ 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,18 +4888,18 @@ 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 + 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 2016 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -5257,12 +4926,12 @@ i32.const 9 i32.const 2352 call $~lib/rt/__newArray - local.set $0 + local.set $21 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $21 i32.store offset=12 local.get $1 - local.get $0 + local.get $21 call $~lib/staticarray/StaticArray<~lib/string/String>#concat local.tee $0 i32.store offset=16 @@ -5288,12 +4957,12 @@ i32.const 9 i32.const 2416 call $~lib/rt/__newArray - local.set $0 + local.set $21 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $21 i32.store offset=12 local.get $1 - local.get $0 + local.get $21 call $~lib/staticarray/StaticArray<~lib/string/String>#concat local.tee $0 i32.store offset=16 @@ -5390,57 +5059,53 @@ call $~lib/builtins/abort unreachable end - i32.const 8 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $1 - i32.const 2496 - i32.const 8 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 2496 + i32.const 8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store i32.const 0 - local.get $1 + local.get $0 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 + local.get $1 + local.get $7 i32.gt_s if i32.const 1 - i32.const 1 - local.get $16 + local.get $7 i32.const 3 i32.shl - local.get $1 + local.get $0 i32.add f64.load - local.tee $7 - local.get $7 - f64.ne - local.get $7 + local.tee $12 f64.const nan:0x8000000000000 f64.eq - select + local.get $12 + local.get $12 + f64.ne + i32.or br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $16 + local.get $7 i32.const 1 i32.add - local.set $16 + local.set $7 br $while-continue|0 end end @@ -5455,60 +5120,54 @@ call $~lib/builtins/abort unreachable end - i32.const 4 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $1 - i32.const 2528 - i32.const 4 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) + i32.const 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 2528 + i32.const 4 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store i32.const 0 - local.set $16 - i32.const 0 - local.get $1 + local.get $0 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 + loop $while-continue|09 + local.get $1 + local.get $8 i32.gt_s if i32.const 1 - i32.const 1 - local.get $16 + local.get $8 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add f32.load - local.tee $8 - local.get $8 - f32.ne - local.get $8 + local.tee $11 f32.const nan:0x400000 f32.eq - select + local.get $11 + local.get $11 + f32.ne + i32.or br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $16 + local.get $8 i32.const 1 i32.add - local.set $16 - br $while-continue|07 + local.set $8 + br $while-continue|09 end end i32.const 0 @@ -5526,56 +5185,50 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $7 i32.const 2560 i32.const 12 call $~lib/memory/memory.copy - local.get $0 + local.get $7 i32.store offset=16 - i32.const 0 - local.set $1 + i32.const -1 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#indexOf - local.get $0 + local.get $7 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 - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf - end - loop $while-continue|013 + 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 $0 + local.get $7 i32.add i32.load 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 $1 - br $while-continue|013 + local.set $2 + 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 @@ -5584,50 +5237,44 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#indexOf14 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf13 + local.get $7 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 - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf14 - end - loop $while-continue|015 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf13 + loop $while-continue|028 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s if - local.get $1 + local.get $3 + local.tee $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load i32.const 7 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf14 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf13 + local.get $0 i32.const 1 i32.add - local.set $1 - br $while-continue|015 + local.set $3 + 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 @@ -5639,9 +5286,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#indexOf29 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5653,30 +5302,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#indexOf29 + 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 $7 i32.add i32.load i32.const 9 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf16 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf29 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 +5339,57 @@ 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 $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 - i32.const -1 - i32.le_s + local.tee $1 + i32.const 0 + i32.lt_u i32.const 1 - local.get $2 + local.get $1 select - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf18 - end - local.get $2 + 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|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 $0 + local.get $7 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 - end + 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 @@ -5758,21 +5402,21 @@ end i32.const -1 local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf38 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $0 i32.const -3 i32.le_s i32.const 1 - local.get $2 + local.get $0 select - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $2 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf38 + local.get $0 i32.const 3 i32.sub local.tee $1 @@ -5782,25 +5426,25 @@ i32.gt_s select local.set $1 - loop $while-continue|021 + loop $while-continue|041 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if local.get $1 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf20 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf38 local.get $1 i32.const 1 i32.add local.set $1 - br $while-continue|021 + br $while-continue|041 end end i32.const -1 @@ -5819,70 +5463,75 @@ 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 $1 i32.const -1 - local.set $2 + local.set $0 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 $3 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $0 - local.get $16 + local.get $1 + local.get $3 i32.add - local.get $16 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $16 + local.get $1 + local.get $1 + local.get $3 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - loop $while-continue|00 - local.get $0 + local.set $1 + loop $while-continue|01 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $2 + local.get $1 + local.tee $0 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 $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|00 + local.set $1 + br $while-continue|01 end end i32.const -1 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 i32.const 3 i32.ne if @@ -5895,68 +5544,62 @@ 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 $1 + local.set $3 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 $0 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf6 + local.get $1 i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf6 local.get $1 - local.get $16 + local.get $3 i32.add - local.get $16 + local.get $1 i32.const 1 i32.sub + local.get $3 local.get $1 - local.get $1 - local.get $16 - i32.ge_s + local.get $3 + i32.le_s select - local.get $1 + local.get $3 i32.const 0 i32.lt_s select local.set $1 - loop $while-continue|06 + loop $while-continue|07 local.get $1 i32.const 0 i32.ge_s if local.get $1 - local.tee $2 + 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#lastIndexOf5 - local.get $2 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf6 + local.get $0 i32.const 1 i32.sub local.set $1 - br $while-continue|06 + br $while-continue|07 end end i32.const -1 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 i32.const -1 i32.ne if @@ -5967,54 +5610,52 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 - local.get $0 + i32.const -1 + local.set $7 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf8 + 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#lastIndexOf8 + local.get $0 i32.const 1 i32.sub i32.const 3 - local.get $1 + local.get $0 i32.const 3 - i32.le_u + i32.le_s select - local.set $1 - loop $while-continue|023 - local.get $1 + local.set $7 + loop $while-continue|044 + 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#lastIndexOf7 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf8 + local.get $7 i32.const 1 i32.sub - local.set $1 - br $while-continue|023 + 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 @@ -6025,54 +5666,52 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 - local.get $0 + i32.const -1 + local.set $7 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 + 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#lastIndexOf24 - end - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 + local.get $0 i32.const 1 i32.sub i32.const 2 - local.get $1 + local.get $0 i32.const 2 - i32.le_u + i32.le_s select - local.set $1 - loop $while-continue|025 - local.get $1 + local.set $7 + loop $while-continue|048 + 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#lastIndexOf24 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 + local.get $7 i32.const 1 i32.sub - local.set $1 - br $while-continue|025 + 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 @@ -6081,49 +5720,47 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - local.get $0 + i32.const -1 + local.set $7 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf49 + 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#lastIndexOf26 - end - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf49 + local.get $0 i32.const 2 i32.sub - local.set $1 - loop $while-continue|027 - local.get $1 + local.set $7 + loop $while-continue|052 + 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#lastIndexOf26 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf49 + local.get $7 i32.const 1 i32.sub - local.set $1 - br $while-continue|027 + 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 @@ -6133,46 +5770,46 @@ unreachable end i32.const -1 - local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $0 + local.set $8 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf53 + 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#lastIndexOf28 - local.get $2 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf53 + local.get $0 i32.const 1 i32.sub - local.set $1 - loop $while-continue|029 - local.get $1 + local.set $8 + loop $while-continue|056 + local.get $8 i32.const 0 i32.ge_s if - local.get $1 + local.get $8 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#lastIndexOf53 + local.get $8 i32.const 1 i32.sub - local.set $1 - br $while-continue|029 + local.set $8 + br $while-continue|056 end end i32.const -1 - local.set $1 + local.set $8 end - local.get $1 + local.get $8 i32.const 3 i32.ne if @@ -6197,8 +5834,14 @@ i32.const 2800 i32.store offset=20 local.get $1 + local.get $1 + 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 @@ -6222,8 +5865,14 @@ i32.const 2768 i32.store offset=20 local.get $1 + local.get $1 + 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 @@ -6247,8 +5896,14 @@ i32.const 2928 i32.store offset=20 local.get $1 + local.get $1 + 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 @@ -6272,8 +5927,14 @@ i32.const 3008 i32.store offset=20 local.get $1 + local.get $1 + 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 @@ -6297,8 +5958,14 @@ i32.const 2800 i32.store offset=20 local.get $1 + local.get $1 + 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 @@ -6319,8 +5986,14 @@ i32.const 2800 i32.store local.get $1 + local.get $1 + 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 i32.const 4 @@ -6345,45 +6018,45 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 3104 i32.const 8 call $~lib/memory/memory.copy - local.get $1 + local.get $0 i32.store offset=16 i32.const 1 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 1 - i32.gt_u + i32.gt_s select - local.set $16 - loop $for-loop|024 - local.get $0 - local.get $16 - i32.gt_s + local.set $1 + loop $for-loop|060 + local.get $1 + local.get $2 + i32.lt_s if - local.get $16 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.const 1 i32.store - local.get $16 + local.get $1 i32.const 1 i32.add - local.set $16 - br $for-loop|024 + local.set $1 + br $for-loop|060 end end - local.get $1 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray#__get if @@ -6394,7 +6067,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6417,8 +6090,6 @@ call $~lib/memory/memory.copy local.get $1 i32.store offset=16 - i32.const 0 - local.set $16 local.get $1 i32.const 20 i32.sub @@ -6437,22 +6108,22 @@ i32.const 1 i32.sub local.set $0 - loop $while-continue|026 + loop $while-continue|064 local.get $2 - local.get $16 + local.get $4 i32.gt_u if - local.get $16 + local.get $4 i32.const 2 i32.shl local.get $1 i32.add local.tee $3 i32.load - local.set $4 + local.set $7 local.get $3 local.get $0 - local.get $16 + local.get $4 i32.sub i32.const 2 i32.shl @@ -6462,13 +6133,13 @@ i32.load i32.store local.get $3 - local.get $4 + local.get $7 i32.store - local.get $16 + local.get $4 i32.const 1 i32.add - local.set $16 - br $while-continue|026 + local.set $4 + br $while-continue|064 end end end @@ -6521,7 +6192,6 @@ call $~lib/memory/memory.copy local.get $1 i32.store offset=16 - i32.const 0 local.get $1 i32.const 20 i32.sub @@ -6529,36 +6199,60 @@ i32.const 2 i32.shr_u local.tee $0 - local.get $0 + local.tee $2 + local.set $3 + i32.const 0 + local.get $2 + local.get $2 + i32.const 0 + i32.gt_s select - local.set $2 - local.get $0 + local.tee $2 + i32.const 2 + i32.shl + local.get $1 + i32.add i32.const 3 local.get $0 local.get $0 i32.const 3 - i32.gt_u + i32.gt_s select - local.tee $3 - i32.sub - local.set $16 - local.get $2 + local.tee $4 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 + i32.const 0 + i32.lt_s + if (result i32) + local.get $0 + local.get $3 + i32.add + local.tee $3 + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + else + local.get $3 + local.get $0 + local.get $0 + local.get $3 + i32.gt_s + select + end + local.get $4 + i32.sub + local.tee $3 local.get $0 local.get $2 i32.sub local.tee $0 local.get $0 - local.get $16 + local.get $3 i32.gt_s select i32.const 2 @@ -6643,8 +6337,6 @@ local.tee $2 i32.const 3248 i32.store offset=12 - i32.const 0 - local.set $16 local.get $2 i32.const 4 i32.sub @@ -6659,6 +6351,7 @@ i32.store local.get $0 local.get $1 + local.tee $0 i32.const 20 i32.sub i32.load offset=16 @@ -6668,41 +6361,41 @@ 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.set $7 + loop $for-loop|042 local.get $3 - local.get $16 + local.get $5 i32.gt_s if - local.get $1 - local.get $16 + local.get $5 i32.const 2 i32.shl - local.tee $5 + local.tee $8 + local.get $0 i32.add i32.load - local.set $6 + local.set $21 i32.const 3 global.set $~argumentsLength - local.get $4 - local.get $5 + local.get $7 + local.get $8 i32.add - local.get $6 - local.get $16 - local.get $1 + local.get $21 + local.get $5 + local.get $0 i32.const 3248 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $16 + local.get $5 i32.const 1 i32.add - local.set $16 - br $for-loop|027 + local.set $5 + br $for-loop|042 end end global.get $~lib/memory/__stack_pointer @@ -6710,9 +6403,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $2 - local.get $0 + 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 +6418,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 +6431,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $4 i32.const 2 call $~lib/array/Array#__get i32.const 4 @@ -6754,38 +6447,36 @@ global.get $~lib/memory/__stack_pointer i32.const 3280 i32.store offset=12 - i32.const 0 - local.set $16 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $0 - loop $for-loop|030 - local.get $0 - local.get $16 + local.set $2 + loop $for-loop|070 + local.get $2 + local.get $6 i32.gt_s if - local.get $16 + local.get $6 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $16 - local.get $1 + local.get $6 + local.get $0 i32.const 3280 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $16 + local.get $6 i32.const 1 i32.add - local.set $16 - br $for-loop|030 + local.set $6 + br $for-loop|070 end end global.get $std/staticarray/maxVal @@ -6800,13 +6491,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $0 + local.tee $5 i32.const 3312 i32.store offset=12 - i32.const 0 - local.set $16 - local.get $0 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6815,102 +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 $1 + local.get $0 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 + local.set $4 + loop $for-loop|045 + local.get $4 + local.get $18 i32.gt_s if - local.get $16 + local.get $18 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load - local.set $9 + local.set $6 i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $16 - local.get $1 + 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 $13 + local.tee $7 i32.const 1 i32.add - local.tee $14 - local.tee $0 + local.tee $8 + local.set $21 local.get $3 i32.load offset=8 - local.tee $5 + local.tee $22 i32.const 2 i32.shr_u - i32.gt_u + local.get $8 + i32.lt_u if - local.get $0 + 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 $5 + block $__inlined_func$~lib/rt/itcms/__renew (result i32) + local.get $22 i32.const 1 i32.shl - local.tee $4 + local.tee $22 i32.const 1073741820 - local.get $4 + local.get $22 i32.const 1073741820 i32.lt_u select - local.tee $4 - local.get $0 + local.tee $22 + local.get $21 i32.const 8 - local.get $0 + local.get $21 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $0 - local.get $0 - local.get $4 + local.tee $21 + local.get $21 + local.get $22 i32.lt_u select - local.tee $10 - local.tee $4 + local.tee $21 local.get $3 i32.load - local.tee $15 - local.tee $2 + local.tee $22 i32.const 20 i32.sub - local.tee $6 + local.tee $23 i32.load i32.const -4 i32.and @@ -6918,81 +6606,78 @@ i32.sub i32.le_u if - local.get $6 - local.get $4 + local.get $23 + local.get $21 i32.store offset=16 - local.get $2 - local.set $0 + local.get $22 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $4 - local.get $6 + local.get $21 + local.get $23 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $0 - local.get $2 - local.get $4 - local.get $6 + local.tee $24 + local.get $22 + local.get $21 + local.get $23 i32.load offset=16 - local.tee $2 - local.get $2 - local.get $4 - i32.gt_u + local.tee $23 + local.get $21 + local.get $23 + i32.lt_u select call $~lib/memory/memory.copy + local.get $24 end - local.get $0 - local.get $5 - i32.add - local.get $10 - local.get $5 - i32.sub - call $~lib/memory/memory.fill - local.get $0 - local.get $15 + local.tee $23 + local.get $22 i32.ne if local.get $3 - local.get $0 + local.get $23 i32.store local.get $3 - local.get $0 + local.get $23 i32.store offset=4 - local.get $3 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $23 + if + local.get $3 + local.get $23 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end local.get $3 - local.get $10 + local.get $21 i32.store offset=8 end local.get $3 i32.load offset=4 - local.get $13 + local.get $7 i32.const 2 i32.shl i32.add - local.get $9 + local.get $6 i32.store local.get $3 - local.get $14 + local.get $8 i32.store offset=12 end - local.get $16 + local.get $18 i32.const 1 i32.add - local.set $16 - br $for-loop|028 + local.set $18 + 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 $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 @@ -7004,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 @@ -7017,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 @@ -7033,24 +6718,19 @@ global.get $~lib/memory/__stack_pointer 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.get $0 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 + local.set $2 + loop $for-loop|076 + local.get $2 + local.get $17 i32.gt_s if - local.get $16 + local.get $17 i32.const 2 i32.shl local.get $0 @@ -7059,22 +6739,22 @@ local.set $3 i32.const 4 global.set $~argumentsLength - local.get $2 + local.get $10 local.get $3 - local.get $16 + local.get $17 local.get $0 i32.const 3344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $16 + local.set $10 + local.get $17 i32.const 1 i32.add - local.set $16 - br $for-loop|033 + local.set $17 + br $for-loop|076 end end - local.get $2 + local.get $10 i32.const 6 i32.ne if @@ -7088,9 +6768,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3376 i32.store offset=12 - i32.const 0 - local.set $2 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -7098,37 +6776,37 @@ i32.shr_u i32.const 1 i32.sub - local.set $16 - loop $for-loop|035 - local.get $16 + local.set $8 + loop $for-loop|080 + local.get $8 i32.const 0 i32.ge_s if - local.get $16 + local.get $8 i32.const 2 i32.shl local.get $0 i32.add i32.load - local.set $1 + local.set $2 i32.const 4 global.set $~argumentsLength + local.get $9 local.get $2 - local.get $1 - local.get $16 + local.get $8 local.get $0 i32.const 3376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $16 + local.set $9 + local.get $8 i32.const 1 i32.sub - local.set $16 - br $for-loop|035 + local.set $8 + br $for-loop|080 end end - local.get $2 + local.get $9 i32.const 6 i32.ne if @@ -7139,25 +6817,23 @@ 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 $2 - local.get $0 - i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=12 + local.get $1 + 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|084 local.get $2 local.get $16 - i32.lt_s + i32.gt_s if - local.get $2 + local.get $16 i32.const 2 i32.shl local.get $0 @@ -7168,18 +6844,18 @@ global.set $~argumentsLength i32.const 1 local.get $3 - local.get $2 + 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 $2 + local.get $16 i32.const 1 i32.add - local.set $2 - br $for-loop|038 + local.set $16 + br $for-loop|084 end end i32.const 0 @@ -7193,25 +6869,23 @@ 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#some39 (result i32) - i32.const 0 - local.set $2 - local.get $0 + block $__inlined_func$~lib/staticarray/StaticArray#some86 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 3440 + i32.store offset=12 + local.get $1 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|089 local.get $2 - local.get $16 - i32.lt_s + local.get $15 + i32.gt_s if - local.get $2 + local.get $15 i32.const 2 i32.shl local.get $0 @@ -7222,18 +6896,18 @@ global.set $~argumentsLength i32.const 1 local.get $3 - local.get $2 + 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#some39 + br_if $__inlined_func$~lib/staticarray/StaticArray#some86 drop - local.get $2 + local.get $15 i32.const 1 i32.add - local.set $2 - br $for-loop|040 + local.set $15 + br $for-loop|089 end end i32.const 0 @@ -7246,25 +6920,23 @@ 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 $2 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store offset=12 + local.get $1 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|093 local.get $2 - local.get $16 - i32.lt_s + local.get $14 + i32.gt_s if - local.get $2 + local.get $14 i32.const 2 i32.shl local.get $0 @@ -7275,7 +6947,7 @@ global.set $~argumentsLength i32.const 0 local.get $3 - local.get $2 + local.get $14 local.get $0 i32.const 3472 i32.load @@ -7283,11 +6955,11 @@ i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#every drop - local.get $2 + local.get $14 i32.const 1 i32.add - local.set $2 - br $for-loop|041 + local.set $14 + br $for-loop|093 end end i32.const 1 @@ -7301,25 +6973,23 @@ 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#every42 (result i32) - i32.const 0 - local.set $2 - local.get $0 + block $__inlined_func$~lib/staticarray/StaticArray#every95 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.store offset=12 + local.get $1 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|098 local.get $2 - local.get $16 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $2 + local.get $13 i32.const 2 i32.shl local.get $0 @@ -7330,19 +7000,19 @@ global.set $~argumentsLength i32.const 0 local.get $3 - local.get $2 + local.get $13 local.get $0 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#every95 drop - local.get $2 + local.get $13 i32.const 1 i32.add - local.set $2 - br $for-loop|043 + local.set $13 + br $for-loop|098 end end i32.const 1 @@ -7358,9 +7028,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3536 i32.store offset=12 - i32.const 0 - local.set $1 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -7368,12 +7036,12 @@ i32.shr_u local.set $2 block $__inlined_func$~lib/staticarray/StaticArray#findIndex - loop $for-loop|044 - local.get $1 + loop $for-loop|0102 local.get $2 - i32.lt_s + local.get $20 + i32.gt_s if - local.get $1 + local.get $20 i32.const 2 i32.shl local.get $0 @@ -7381,23 +7049,23 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + 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 $1 + local.get $20 i32.const 1 i32.add - local.set $1 - br $for-loop|044 + local.set $20 + br $for-loop|0102 end end i32.const -1 - local.set $1 + local.set $20 end - local.get $1 + local.get $20 i32.const 1 i32.ne if @@ -7411,22 +7079,20 @@ global.get $~lib/memory/__stack_pointer i32.const 3568 i32.store offset=12 - i32.const 0 - local.set $1 - local.get $0 + local.get $1 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#findIndex104 + loop $for-loop|0107 local.get $2 - i32.lt_s + local.get $19 + i32.gt_s if - local.get $1 + local.get $19 i32.const 2 i32.shl local.get $0 @@ -7434,23 +7100,23 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + 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#findIndex45 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex104 + local.get $19 i32.const 1 i32.add - local.set $1 - br $for-loop|046 + local.set $19 + br $for-loop|0107 end end i32.const -1 - local.set $1 + local.set $19 end - local.get $1 + local.get $19 i32.const -1 i32.ne if @@ -7464,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 @@ -7472,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|047 - local.get $1 + loop $for-loop|0111 + local.get $8 i32.const 0 i32.ge_s if - local.get $1 + local.get $8 i32.const 2 i32.shl local.get $0 @@ -7487,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 - br $for-loop|047 + 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 @@ -7517,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 @@ -7525,38 +7191,38 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex48 - loop $for-loop|049 - local.get $1 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex113 + loop $for-loop|0116 + 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 i32.load i32.const 3 global.set $~argumentsLength - local.get $1 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#findLastIndex48 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex113 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|049 + local.set $0 + br $for-loop|0116 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 +7246,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 +7258,16 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of18 - block $0of19 - block $outOfRange10 + block $1of114 + block $0of115 + block $outOfRange16 global.get $~argumentsLength - br_table $0of19 $1of18 $outOfRange10 + br_table $0of115 $1of114 $outOfRange16 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 +7279,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 +7341,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|037 + loop $while-continue|0121 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|037 + br $while-continue|0121 end end end @@ -7754,7 +7420,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7778,8 +7443,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 @@ -7787,7 +7450,7 @@ if local.get $3 local.get $2 - local.get $6 + local.get $4 call $~lib/memory/memory.copy end local.get $5 @@ -7799,10 +7462,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,52 +7549,52 @@ 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.tee $2 local.get $1 - select - local.tee $3 - local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $4 + i32.const 0 + local.get $1 + select + local.tee $3 i32.add - local.tee $2 + local.tee $4 i32.const 268435455 i32.gt_u if i32.const 1680 i32.const 1152 - i32.const 43 + i32.const 44 i32.const 60 call $~lib/builtins/abort 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 $2 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 @@ -7939,7 +7605,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) @@ -8023,10 +7689,10 @@ 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 $3 i32.store local.get $1 i32.const 2 @@ -8038,11 +7704,11 @@ local.set $0 loop $while-continue|0 local.get $0 - local.get $3 + local.get $2 i32.lt_u if local.get $0 - local.get $2 + local.get $3 i32.add local.get $0 local.get $1 @@ -8050,10 +7716,13 @@ i32.load local.tee $4 i32.store - local.get $2 local.get $4 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $4 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.add @@ -8065,7 +7734,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + 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 @@ -8097,7 +7766,7 @@ if i32.const 1088 i32.const 1152 - i32.const 115 + i32.const 118 i32.const 41 call $~lib/builtins/abort unreachable @@ -8116,7 +7785,7 @@ if i32.const 2176 i32.const 1152 - i32.const 119 + i32.const 122 i32.const 40 call $~lib/builtins/abort unreachable @@ -8158,13 +7827,13 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + 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 $3 i32.const 268435455 @@ -8172,7 +7841,7 @@ if i32.const 1680 i32.const 1152 - i32.const 230 + i32.const 233 i32.const 60 call $~lib/builtins/abort unreachable @@ -8182,71 +7851,77 @@ i32.const 9 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $6 i32.store - local.get $3 + local.get $6 i32.load offset=4 - local.set $5 - local.get $2 + local.set $3 + local.get $4 i32.const 2 i32.shl - local.set $2 + local.set $4 loop $for-loop|0 local.get $2 local.get $4 - i32.gt_u + i32.lt_u if - local.get $4 - local.get $5 + local.get $2 + local.get $3 i32.add local.get $0 - local.get $4 + local.get $2 i32.add i32.load local.tee $7 i32.store - local.get $3 local.get $7 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $6 + local.get $7 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 i32.const 4 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end - local.get $2 - local.get $5 + local.get $3 + local.get $4 i32.add - local.set $4 + 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 $5 + local.set $3 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $5 + local.get $3 i32.lt_u if local.get $0 - local.get $4 + local.get $2 i32.add local.get $0 local.get $1 i32.add i32.load - local.tee $2 + local.tee $4 i32.store - local.get $3 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $6 + local.get $4 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.add @@ -8258,6 +7933,287 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + 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 + 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/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index d60707ed56..62b5515c7a 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 @@ -1667,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 @@ -3847,7 +3852,7 @@ if i32.const 64 i32.const 752 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4812,7 +4817,7 @@ if i32.const 656 i32.const 752 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -4856,14 +4861,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 @@ -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 @@ -8751,7 +8753,7 @@ if i32.const 656 i32.const 128 - i32.const 90 + i32.const 91 i32.const 60 call $~lib/builtins/abort unreachable @@ -8766,10 +8768,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 +8912,7 @@ if i32.const 656 i32.const 128 - i32.const 43 + i32.const 44 i32.const 60 call $~lib/builtins/abort unreachable @@ -9106,7 +9108,7 @@ if i32.const 64 i32.const 128 - i32.const 115 + i32.const 118 i32.const 41 call $~lib/builtins/abort unreachable @@ -9130,7 +9132,7 @@ if i32.const 1152 i32.const 128 - i32.const 119 + i32.const 122 i32.const 40 call $~lib/builtins/abort unreachable @@ -9188,7 +9190,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.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 2dcb63d1cd..f021a85f2e 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 @@ -1286,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 - global.set $~lib/rt/itcms/iter - br $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 + 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 + 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 @@ -1333,271 +1247,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 +1537,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 +1558,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 +1576,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1759,54 +1597,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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.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 +1649,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 +1666,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 +1702,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 +1721,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1896,7 +1731,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1914,12 +1749,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 @@ -1979,19 +1814,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 +1835,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 +1855,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 +1867,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 +1989,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 +2015,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 +2042,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 +2089,7 @@ i32.eq if (result i32) local.get $3 - local.get $4 + local.get $5 i32.add i32.const 1 i32.shl @@ -2298,18 +2133,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 +2167,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 +2323,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 +2350,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 +2361,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 +2372,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 +2386,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 +2416,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 +2441,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 +2452,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 +2463,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 +2477,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 +2503,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 +2528,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 +2539,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 +2550,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 +2564,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 +2601,109 @@ 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 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 $4 + local.get $1 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.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.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 $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 @@ -2907,59 +2720,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 +2783,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 +2794,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 +2812,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 +3033,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -3235,33 +3042,34 @@ 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) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -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 @@ -3296,73 +3104,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -3371,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) @@ -3522,7 +3330,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 +3339,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 +3386,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 +3396,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 +3451,7 @@ i32.add end end - local.get $4 + local.get $3 i32.add local.tee $2 i32.const 1 @@ -3674,7 +3482,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 +3513,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 +3524,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 +3545,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 @@ -3847,7 +3655,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 +3743,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 +3889,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 +3995,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 +4020,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 +4064,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 +4093,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 +4117,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 +4141,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 +4165,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 +4189,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 +4213,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 +4237,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 +4261,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 +4285,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 +4309,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 +4333,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 +4357,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 +4381,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 +4405,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 +4429,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 +4453,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 +4477,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 +4501,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 +4525,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 +4549,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 +4573,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 +4597,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 +4621,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 +4645,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 +4669,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 +4699,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 +4729,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 +4756,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 +4783,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 +4813,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 +4837,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 +4861,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 +4885,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 +4909,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 +4933,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 +4957,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 +4981,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 +5005,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 +5029,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 +5053,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 +5077,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 +5101,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 +5125,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 +5149,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 +5173,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 +5197,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 +5221,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 +5245,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 +5269,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 +5293,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 +5317,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 +5341,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 +5365,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 +5389,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 +5413,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 +5437,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 +5461,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 +5485,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 +5509,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 +5533,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 +5557,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 +5581,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 +5605,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 +5629,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 +5653,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 +5677,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 +5701,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 +5725,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 +5749,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 +5773,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 +5797,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 +5821,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 +5845,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 +5869,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 +5893,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 +5917,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 +5941,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 +5965,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 +5989,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 +6013,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 +6033,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#codePointAt0 (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#codePointAt0 + 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#codePointAt0 + 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 + 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#codePointAt1 (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#codePointAt1 + 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#codePointAt1 + 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 + 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#codePointAt2 (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#codePointAt2 + 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#codePointAt2 + 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 + 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#codePointAt3 (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#codePointAt3 + 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#codePointAt3 + 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 + 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#codePointAt4 (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#codePointAt4 + 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#codePointAt4 + 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 + 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 +6463,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 +6473,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 +6497,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 +6519,7 @@ f64.const 0 call $~lib/builtins/trace end - local.get $1 + local.get $0 local.get $3 i64.ne if @@ -6716,7 +6528,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 +6540,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 +6562,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 +6584,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 +6607,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 +6648,56 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $9 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 $4 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 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 $2 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 $2 i32.const 1023 i32.and - local.get $3 + local.get $4 local.tee $1 i32.const 1023 i32.and @@ -6894,53 +6706,53 @@ i32.or i32.const 65536 i32.add - local.tee $3 + local.tee $4 i32.const 131072 i32.ge_u if - local.get $5 + local.get $10 i32.const 1 i32.shl - local.get $6 + local.get $9 i32.add - local.get $7 + local.get $2 i32.const 16 i32.shl local.get $1 i32.or i32.store - local.get $5 + local.get $10 i32.const 1 i32.add - local.set $5 + local.set $10 br $for-continue|0 end end end - local.get $3 + local.get $4 i32.const 304 i32.eq if - local.get $5 + local.get $10 i32.const 1 i32.shl - local.get $6 + local.get $9 i32.add i32.const 50790505 i32.store - local.get $5 + local.get $10 i32.const 1 i32.add - local.set $5 + local.set $10 else - local.get $3 + local.get $4 i32.const 931 i32.eq if - local.get $5 + local.get $10 i32.const 1 i32.shl - local.get $6 + local.get $9 i32.add i32.const 962 i32.const 963 @@ -6950,31 +6762,32 @@ if (result i32) block $~lib/util/string/isFinalSigma|inlined.0 (result i32) i32.const 0 - local.set $2 + local.set $1 i32.const 0 - local.get $4 - local.tee $3 + local.get $3 + local.tee $2 + local.tee $4 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 + local.set $6 loop $while-continue|1 - local.get $3 - local.get $9 + local.get $4 + local.get $6 i32.gt_s if i32.const -1 - local.set $1 + local.set $11 block $~lib/util/string/codePointBefore|inlined.0 - local.get $3 + local.get $4 i32.const 0 i32.le_s br_if $~lib/util/string/codePointBefore|inlined.0 - local.get $3 + local.get $4 i32.const 1 i32.sub i32.const 1 @@ -6987,7 +6800,7 @@ i32.and i32.const 56320 i32.eq - local.get $3 + local.get $4 i32.const 2 i32.sub i32.const 0 @@ -6997,7 +6810,7 @@ local.get $7 i32.const 1023 i32.and - local.get $3 + local.get $4 i32.const 2 i32.sub i32.const 1 @@ -7005,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 @@ -7013,8 +6826,8 @@ i32.add i32.const 65536 i32.add - local.set $1 - local.get $10 + local.set $11 + local.get $5 i32.const 64512 i32.and i32.const 55296 @@ -7029,13 +6842,13 @@ i32.const 55296 i32.eq select - local.set $1 + local.set $11 end - local.get $1 + local.get $11 i32.const 918000 i32.lt_u if (result i32) - local.get $1 + local.get $11 i32.const 8 i32.shr_u i32.const 7212 @@ -7045,14 +6858,14 @@ i32.shl i32.const 7212 i32.add - local.get $1 + local.get $11 i32.const 255 i32.and i32.const 3 i32.shr_u i32.add i32.load8_u - local.get $1 + local.get $11 i32.const 7 i32.and i32.shr_u @@ -7064,11 +6877,11 @@ i32.eqz if i32.const 0 - local.get $1 + local.get $11 i32.const 127370 i32.lt_u if (result i32) - local.get $1 + local.get $11 i32.const 8 i32.shr_u i32.const 10220 @@ -7078,14 +6891,14 @@ i32.shl i32.const 10220 i32.add - local.get $1 + local.get $11 i32.const 255 i32.and i32.const 3 i32.shr_u i32.add i32.load8_u - local.get $1 + local.get $11 i32.const 7 i32.and i32.shr_u @@ -7098,28 +6911,28 @@ br_if $~lib/util/string/isFinalSigma|inlined.0 drop i32.const 1 - local.set $2 + local.set $1 end - local.get $3 - local.get $1 + local.get $4 + local.get $11 i32.const 65536 i32.ge_s i32.const 1 i32.add i32.sub - local.set $3 + local.set $4 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 + local.get $2 i32.const 1 i32.add - local.tee $3 + local.tee $4 i32.const 30 i32.add local.tee $1 @@ -7128,13 +6941,13 @@ local.get $8 i32.lt_s select - local.set $2 + local.set $5 loop $while-continue|2 - local.get $2 - local.get $3 - i32.gt_s + local.get $4 + local.get $5 + i32.lt_s if - local.get $3 + local.get $4 i32.const 1 i32.shl local.get $0 @@ -7146,25 +6959,25 @@ i32.const 55296 i32.eq local.get $8 - local.get $3 + local.get $4 i32.const 1 i32.add i32.ne i32.and if - local.get $3 + local.get $4 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u offset=2 - local.tee $7 + local.tee $2 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $7 + local.get $2 local.get $1 i32.const 10 i32.shl @@ -7244,9 +7057,9 @@ i32.ge_u i32.const 1 i32.add - local.get $3 + local.get $4 i32.add - local.set $3 + local.set $4 br $while-continue|2 end end @@ -7258,53 +7071,53 @@ select i32.store16 else - local.get $3 + local.get $4 i32.const 9398 i32.sub i32.const 25 i32.le_u if - local.get $5 + local.get $10 i32.const 1 i32.shl - local.get $6 + local.get $9 i32.add - local.get $3 + local.get $4 i32.const 26 i32.add i32.store16 else - local.get $3 + local.get $4 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 $10 i32.const 1 i32.shl - local.get $6 + local.get $9 i32.add - local.get $3 + local.get $1 i32.store16 else - local.get $5 + local.get $10 i32.const 1 i32.shl - local.get $6 + local.get $9 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 +7126,40 @@ i32.shl i32.or i32.store - local.get $5 + local.get $10 i32.const 1 i32.add - local.set $5 + local.set $10 end end end end end else - local.get $5 + local.get $10 i32.const 1 i32.shl - local.get $6 + local.get $9 i32.add - local.get $3 + local.get $4 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 $10 i32.const 1 i32.add - local.set $5 + local.set $10 br $for-loop|0 end end - local.get $6 - local.get $5 + local.get $9 + local.get $10 i32.const 1 i32.shl call $~lib/rt/itcms/__renew @@ -7430,4 +7243,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index 69c093d509..49a2dfc5da 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)) @@ -1721,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.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index c205a6bed6..eaf627f4de 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 @@ -871,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 @@ -918,271 +832,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - call $~lib/rt/tlsf/insertBlock + 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 + 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) + (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 +1122,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 +1143,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 +1161,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1344,54 +1182,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 +1234,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 +1251,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 +1287,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 +1306,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1481,7 +1316,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1499,12 +1334,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 @@ -1564,19 +1399,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 +1420,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 +1440,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 +1452,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 +1574,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 +1589,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 +1745,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 +1772,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 +1783,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 +1794,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 +1808,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 +1838,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 +1863,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 +1874,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 +1885,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 +1899,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 +1925,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 +1950,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 +1961,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 +1972,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 +1986,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 +2023,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 +2142,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 +2205,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 +2216,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 +2234,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 @@ -2646,6 +2453,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -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 @@ -2680,73 +2488,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2755,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) @@ -2802,18 +2610,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 +2695,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,1345 +2704,1356 @@ (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 - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 1056 - i32.store - i32.const 1052 - i32.load - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - memory.size - i32.const 16 - i32.shl - i32.const 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.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-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1056 - i32.store - local.get $0 - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 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 - 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.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.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 11 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.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.ne + if + i32.const 0 + i32.const 1088 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=3 + i32.const 220 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=4 + i32.const 104 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 20 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=5 + if + i32.const 0 + i32.const 1088 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=6 + i32.const 105 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=7 + if + i32.const 0 + i32.const 1088 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=8 + i32.const 82 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=9 + i32.const 216 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=10 + i32.const 98 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 26 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=11 + i32.const 223 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 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 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u - i32.const 240 - 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 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.store + local.get $0 + i32.const 1056 + i32.store + i32.const 1056 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 + 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 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 1824 + i32.store offset=4 + i32.const 1824 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 + 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 86 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=6 - i32.const 240 - 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 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 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 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.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 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 + 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-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 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 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 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 1824 - i32.store offset=4 - i32.const 1824 - i32.const 0 - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - 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 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 100 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 1888 - i32.store offset=4 - i32.const 1888 - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1888 - i32.store offset=4 - local.get $0 - i32.const 1888 - call $~lib/string/String.__eq - i32.eqz - if + 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 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 1888 - i32.store offset=4 - i32.const 1888 - i32.const 0 - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1856 - i32.store offset=4 - local.get $0 - i32.const 1856 - call $~lib/string/String.__eq - i32.eqz - 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 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 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.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if + 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 111 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $0 - i32.const 1056 - i32.store - i32.const 2 - global.set $~argumentsLength - local.get $0 - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if + 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 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=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 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=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 121 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=20 - i32.const 1968 + end + i32.const 38944 + i32.const 38992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/string-encoding/testUTF16DecodeUnsafe + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + if + i32.const 38944 + i32.const 38992 i32.const 1 - call $~lib/string/String.UTF8.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 + 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 + 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 $1 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF16.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 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + 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 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=24 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/string-encoding/testUTF8DecodeUnsafe - global.get $~lib/memory/__stack_pointer - i32.const 2032 - i32.store - i32.const 2032 - call $std/string-encoding/testLarge - global.get $~lib/memory/__stack_pointer - i32.const 15152 - i32.store - i32.const 15152 - call $std/string-encoding/testLarge - global.get $~lib/rt/itcms/state + i32.const 1088 + i32.const 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.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1088 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 38944 - i32.const 38992 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + 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) @@ -4257,22 +4075,22 @@ 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 + local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 1056 @@ -4280,19 +4098,19 @@ i32.const 1056 i32.const 0 call $~lib/string/String.UTF8.byteLength - local.set $2 - local.get $1 + local.set $1 + local.get $0 i32.const 0 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + local.set $2 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 @@ -4304,19 +4122,19 @@ 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 + 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 1056 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -4328,19 +4146,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 +4170,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 +4196,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 +4222,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 +4248,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 +4274,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 +4300,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 +4490,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 +4538,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 +4548,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 +4573,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 +4588,7 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $4 i32.const 2 i32.add else @@ -4782,18 +4598,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 +4616,7 @@ i32.const 56320 i32.eq if - local.get $0 + local.get $4 local.get $3 i32.const 1023 i32.and @@ -4844,17 +4659,17 @@ i32.const 18 i32.shr_u i32.const 240 - i32.or - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 + i32.or + i32.or + i32.store local.get $4 i32.const 4 i32.add local.set $4 + local.get $0 + i32.const 4 + i32.add + local.set $0 br $while-continue|0 end end @@ -4877,7 +4692,7 @@ end local.set $3 end - local.get $0 + local.get $4 local.get $3 i32.const 12 i32.shr_u @@ -4894,29 +4709,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,12 +4765,11 @@ 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 $0 local.get $5 i32.gt_u if @@ -4972,49 +4786,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 +4836,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 +4929,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 +4946,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 +4962,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 ) ) diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index 9b35842eba..3211f81ba3 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)) @@ -1558,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 @@ -4254,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.optimized.wat b/tests/compiler/std/string.optimized.wat index 9302607f35..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))) @@ -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 @@ -1228,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 @@ -1258,30 +1255,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 +1291,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 +1306,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 +1336,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 +1373,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 +1383,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 +1521,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1563,7 +1532,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1583,44 +1552,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 +1598,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1640,20 +1608,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 +1649,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 +1676,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 +1693,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 +1722,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1766,7 +1734,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1803,8 +1771,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 @@ -1881,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 @@ -1928,271 +1969,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -2270,183 +2236,7 @@ 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 $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - 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 $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - 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) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2508,18 +2298,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -2530,54 +2319,51 @@ call $~lib/builtins/abort unreachable end + local.get $5 + 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 - 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 +2371,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 +2389,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -2611,9 +2397,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 +2410,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 +2425,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 +2443,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 + local.set $3 + local.get $2 global.get $~lib/rt/itcms/white local.get $1 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,13 +2533,185 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + 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) @@ -2827,17 +2785,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 +2941,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 +2968,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 +2979,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 +2990,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 +3004,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 +3034,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 +3059,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 +3070,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 +3081,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 +3095,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 +3121,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 +3146,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 +3157,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 +3168,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 +3182,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 +3219,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 @@ -3402,59 +3338,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 +3401,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 +3412,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 +3430,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,119 +3645,59 @@ end end ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/string/String#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 i32.eqz if + i32.const 0 return end local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 i32.eqz if - i32.const 0 - i32.const 1440 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.const -1 + return end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select + local.set $2 + local.get $4 + local.get $3 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) - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - i32.eqz - if - i32.const 0 - return - end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.eqz - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - local.set $2 - local.get $3 - local.get $4 - 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 +3747,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 +3764,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 +3777,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 +3794,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 +3874,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 +3905,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 +3941,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 +3956,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 +3975,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 +4004,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 +4026,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 +4074,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 +4086,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 +4107,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 +4148,7 @@ select end end - local.tee $2 + local.tee $0 i32.le_u if local.get $5 @@ -4302,14 +4169,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 +4196,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 +4235,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 +4271,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 +4305,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 +4389,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 +4430,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 +4442,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 +4510,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 +4546,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 +4580,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 +4705,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 +4717,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.mul + 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 +4977,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 +4997,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 +5094,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 +5123,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 +5141,7 @@ i32.const 0 end if - local.get $12 + local.get $11 f64.const inf f64.mul return @@ -5287,18 +5149,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 +5190,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 +5206,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 +5218,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 +5243,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 +5252,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 +5274,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 +5295,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 +5313,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 +5330,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 +5350,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 +5359,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 +5379,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 +5397,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 +5419,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 +5460,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 +5484,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 +5492,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 +5505,7 @@ i32.add f64.load f64.mul - local.set $11 + local.set $10 i32.const 22 local.set $0 end @@ -5654,13 +5513,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 +5531,7 @@ i32.const 0 i32.gt_s if - local.get $11 + local.get $10 local.get $0 i32.const 3 i32.shl @@ -5682,7 +5541,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 +5581,7 @@ i64.div_u local.tee $6 i64.clz - local.tee $9 + local.tee $12 i64.const 18 i64.sub i64.shl @@ -5732,12 +5591,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 +5612,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 +5649,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 +5674,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 +5766,7 @@ end end end - local.get $12 + local.get $11 f64.copysign return end @@ -6008,14 +5867,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 +5883,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -6033,28 +5892,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) @@ -6062,17 +5921,15 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $0 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 $5 i32.const 2 i32.shr_u i32.gt_u @@ -6083,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 $7 - local.get $4 + local.tee $4 + local.get $5 i32.const 1 i32.shl - local.tee $3 + local.tee $5 i32.const 1073741820 - local.get $3 + local.get $5 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $5 local.get $2 i32.const 8 local.get $2 @@ -6109,53 +5966,52 @@ select i32.const 2 i32.shl - local.tee $2 - local.get $2 - local.get $3 - i32.lt_u + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u select - local.tee $2 + local.tee $5 call $~lib/rt/itcms/__renew - local.tee $3 - local.get $4 - i32.add - local.get $2 + local.tee $6 local.get $4 - i32.sub - call $~lib/memory/memory.fill - local.get $3 - local.get $7 i32.ne if local.get $0 - local.get $3 + local.get $6 i32.store local.get $0 - local.get $3 + local.get $6 i32.store offset=4 - local.get $0 - local.get $3 - 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 end local.get $0 - local.get $2 + local.get $5 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 $0 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $6 + local.get $2 i32.store offset=12 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) @@ -6288,7 +6144,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 +6154,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 @@ -6434,8 +6289,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) @@ -6459,14 +6314,12 @@ 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.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -6512,9 +6365,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 @@ -6530,137 +6383,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 @@ -6670,11 +6523,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 @@ -6689,44 +6542,42 @@ i32.shl i32.const 22862 i32.add - local.tee $8 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 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 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 - select + 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 $1 i64.add @@ -6734,8 +6585,8 @@ br $while-continue|3 end end - local.get $8 local.get $5 + local.get $2 i32.store16 local.get $4 return @@ -6748,7 +6599,7 @@ i64.const 10 i64.mul local.set $3 - local.get $6 + local.get $7 i64.const 10 i64.mul local.tee $0 @@ -6763,11 +6614,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 @@ -6780,26 +6631,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 @@ -6814,44 +6665,42 @@ i32.shl i32.const 22862 i32.add - local.tee $8 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 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 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 - select + 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 @@ -6859,16 +6708,13 @@ br $while-continue|6 end end - local.get $8 local.get $5 + local.get $2 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 +6733,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 +6760,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 +6801,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 +6829,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 +6847,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -7015,24 +6858,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 +6920,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 +6953,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 +6973,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 +7043,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 +7074,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 +7101,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 +7115,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 +7142,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 +7152,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 +7181,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 +7261,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 +7281,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 +7310,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,9 +7326,9 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $invalid - block $~lib/array/Array<~lib/string/String> - block $~lib/array/Array + block $folding-inner0 + block $invalid + block $~lib/array/Array<~lib/string/String> block $~lib/arraybuffer/ArrayBufferView block $~lib/string/String block $~lib/arraybuffer/ArrayBuffer @@ -7502,7 +7336,7 @@ 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 + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $~lib/array/Array<~lib/string/String> $invalid end return end @@ -7513,50 +7347,49 @@ 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 - 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-inner0 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 +7403,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 - 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 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $0 + i32.store + local.get $0 + if 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 @@ -7988,21 +7834,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 @@ -8016,43 +7864,44 @@ end global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store i32.const -1 local.set $0 block $__inlined_func$~lib/string/String#codePointAt - local.get $1 + 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 - i32.const 1 local.get $3 + i32.load16_u offset=2 + local.tee $5 + local.set $0 + local.get $4 i32.const 2 i32.eq - local.get $1 - i32.load16_u offset=2 - local.tee $0 + local.get $5 i32.const 64512 i32.and i32.const 55296 i32.ne - select + i32.or br_if $__inlined_func$~lib/string/String#codePointAt - local.get $1 + local.get $3 i32.load16_u offset=4 - local.tee $1 + local.tee $3 i32.const 64512 i32.and i32.const 56320 i32.ne br_if $__inlined_func$~lib/string/String#codePointAt - local.get $1 + local.get $3 local.get $0 i32.const 10 i32.shl @@ -8117,17 +7966,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 +8000,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 +8016,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 +8033,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 +8122,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 +8146,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 +8170,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 +8194,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 +8217,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 +8326,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 +8348,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 +8370,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 @@ -8539,42 +8388,47 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/string/str - local.tee $0 - i32.store - local.get $1 - 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) + 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 + i32.sub + i32.load offset=16 i32.const 1 - else + i32.shr_u + local.tee $0 + i32.const 0 + local.get $0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.tee $0 + i32.const 2172 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.add + i32.lt_s + br_if $__inlined_func$~lib/string/String#startsWith + drop + local.get $3 local.get $0 - local.get $4 i32.const 2176 - local.get $1 + local.get $4 call $~lib/util/string/compareImpl + i32.eqz end + i32.eqz if i32.const 0 i32.const 1120 @@ -8583,44 +8437,47 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/string/str - local.tee $0 - i32.store - local.get $1 - i32.const 2208 - i32.store offset=4 - i32.const 536870910 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 - i32.const 536870910 - i32.gt_u - select - i32.const 2204 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.sub - local.tee $3 - i32.const 0 - i32.lt_s - if (result i32) + 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 $1 + local.get $0 call $~lib/util/string/compareImpl + i32.eqz end + i32.eqz if i32.const 0 i32.const 1120 @@ -8632,12 +8489,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 +8511,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 +8526,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 +8543,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 +8558,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 +8755,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 +8770,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 +8787,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 +8802,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 +9056,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 +9078,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 +9098,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 +9120,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 +9142,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 +9164,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 +9186,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 +9248,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 +9281,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 +9303,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 +9325,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 +9347,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 +9369,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 +9391,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 +9413,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 +9435,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 +10192,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 +10343,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 +10360,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 +10377,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 +10394,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 +10411,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 +10428,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 +10446,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 +10463,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 +10792,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 @@ -11761,8 +11618,8 @@ i32.store i32.const 4144 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11777,8 +11634,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 +11650,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 +11666,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 +11682,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 +11698,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 +11714,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 +11730,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 +11746,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 +11762,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 +11778,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 +11794,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 +11810,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 +11826,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 +11842,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 +11858,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 +12249,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 +12265,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 +12281,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 +12758,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 @@ -13833,28 +13690,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 $0 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 i32.store i32.const 56322 call $~lib/string/String.fromCodePoint - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=4 - local.get $0 - local.get $1 + local.get $4 + local.get $5 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 @@ -16112,10 +15969,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 +16038,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 +16083,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 +16126,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 +16144,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 +16164,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 +16207,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 +16225,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 +16245,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 +16288,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 +16306,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 +16324,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 +16344,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 +16387,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 +16405,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 +16423,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 +16443,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 +16486,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 +16504,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 +16522,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 +16542,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 +16585,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 +16603,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 +16623,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 +16692,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 +16737,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 +16780,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 +16798,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 +16818,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 +16861,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 +16879,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 +16899,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 +16942,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 +16960,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 +16980,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 +17006,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 +17029,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 +17052,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 +17075,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 +17098,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 +17121,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 +17144,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 +17167,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 +17190,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 +17213,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 +17236,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 +17259,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 +17282,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 +17305,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 +17328,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 +17351,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 +17374,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 +17397,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 +17420,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 +17443,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 +17466,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 +17489,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 +17512,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 +17535,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 +17558,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 +17581,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 +17604,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 +17627,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 +17650,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 +17673,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 +17696,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 +17719,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 +17742,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 +17765,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 +17788,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 +17811,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 +17834,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 +17857,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 +17880,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 +17903,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 +17926,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 +17949,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 +17972,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 +17995,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 +18018,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 +18041,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 +18064,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 +18087,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 +18110,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 +18133,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 +18156,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 +18179,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 +18202,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 +18225,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 +18248,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 +18271,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 +18294,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 +18317,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 +18340,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 +18363,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 +18386,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 +18409,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 +18432,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 +18455,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 +18478,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 +18501,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 +18524,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 +18547,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 +18570,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 +18593,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 +18616,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 +18639,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 +18662,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 +18685,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 +18708,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 +18731,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 +18754,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 +18777,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 +18800,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 +18823,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 +18846,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 +18869,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 +18892,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 +18915,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 +18938,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 +18961,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 +18984,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 +19007,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 +19030,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 +19053,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 +19076,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 +19099,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 +19122,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 +19145,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 +19168,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 +19191,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 +19214,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 +19237,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 +19260,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 +19283,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 +19306,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 +19329,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 +19352,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 +19375,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 +19398,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 +19421,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 +19444,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 +19467,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 +19490,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 +19513,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 +19536,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 +19559,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 +19582,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 +19605,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 +19628,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 +19651,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 +19674,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 +19697,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 +19720,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 +19743,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 +19766,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 +19789,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 +19812,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 +19835,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 +19858,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 +19881,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 +19904,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 +19927,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 +19950,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 +19973,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 +19996,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 +20019,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 +20042,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 +20065,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 +20088,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 +20111,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 +20134,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 +20157,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 +20180,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 +20203,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 +20226,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 +20248,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 +20270,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 +20292,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 +20314,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 +20336,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 +20358,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 +20380,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 +20402,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 +20424,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 +20446,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 +20468,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 +20490,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 +20512,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 +20534,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 +20556,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 +20578,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 +20600,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 +20622,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 +20644,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 +20666,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 +20688,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 +20710,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 +20732,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 +20754,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 +20776,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 +20798,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 +20820,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 +20842,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 +20864,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 +20886,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 +20908,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 +20930,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 +20952,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 +20974,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 +20996,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 +21018,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 +21040,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 +21062,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 +21084,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 +21106,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 +21128,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 +21150,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 +21172,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 +21194,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 +21216,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 +21238,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 +21260,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 +21282,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 +21304,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 +21326,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 +21610,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -21777,8 +21633,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 @@ -21786,7 +21640,7 @@ if local.get $3 local.get $2 - local.get $6 + local.get $4 call $~lib/memory/memory.copy end local.get $5 @@ -21798,10 +21652,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 +21694,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 +21705,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 +21738,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 +21839,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 +21847,12 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 + i32.eqz + local.get $1 + i32.const 1 + i32.shl + local.tee $1 local.get $0 i32.const 20 i32.sub @@ -22000,14 +21861,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $5 - local.get $1 - i32.const 1 - i32.shl - local.tee $3 - i32.gt_u - select - i32.eqz + local.tee $6 + i32.lt_u + i32.or if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22017,57 +21873,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 $4 i32.store - local.get $4 - local.get $3 - local.get $5 + local.get $1 + local.get $6 i32.sub - local.tee $3 - i32.lt_u + local.tee $5 + local.get $3 + i32.gt_u if - local.get $4 local.get $3 + local.get $5 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 $4 local.get $2 + local.get $3 + local.get $1 + call $~lib/memory/memory.repeat local.get $4 local.get $7 - call $~lib/memory/memory.repeat - local.get $1 - local.get $6 i32.add local.get $2 - local.get $3 - local.get $6 + local.get $5 + local.get $7 i32.sub call $~lib/memory/memory.copy else - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $5 call $~lib/memory/memory.copy end - local.get $1 - local.get $3 + local.get $4 + local.get $5 i32.add local.get $0 - local.get $5 + 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 $1 + local.get $4 ) (func $~lib/string/String#padEnd (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -22092,7 +21948,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 +21956,12 @@ i32.shr_u i32.const 1 i32.shl - local.tee $5 + local.tee $3 + i32.eqz + local.get $1 + i32.const 1 + i32.shl + local.tee $4 local.get $0 i32.const 20 i32.sub @@ -22110,14 +21970,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 - local.get $1 - i32.const 1 - i32.shl - local.tee $4 - i32.gt_u - select - i32.eqz + local.tee $5 + i32.lt_u + i32.or if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22134,46 +21989,46 @@ i32.store local.get $1 local.get $0 - local.get $3 - call $~lib/memory/memory.copy local.get $5 + call $~lib/memory/memory.copy local.get $4 - local.get $3 + local.get $5 i32.sub - local.tee $0 - i32.lt_u + local.tee $4 + local.get $3 + i32.gt_u if - local.get $5 - local.get $0 + local.get $3 + local.get $4 i32.const 2 i32.sub - local.get $5 + local.get $3 i32.div_u local.tee $6 i32.mul - local.set $4 + local.set $0 local.get $1 - local.get $3 + local.get $5 i32.add - local.tee $3 + local.tee $5 local.get $2 - local.get $5 + local.get $3 local.get $6 call $~lib/memory/memory.repeat - local.get $3 - local.get $4 + local.get $0 + local.get $5 i32.add local.get $2 - local.get $0 local.get $4 + local.get $0 i32.sub call $~lib/memory/memory.copy else local.get $1 - local.get $3 + local.get $5 i32.add local.get $2 - local.get $0 + local.get $4 call $~lib/memory/memory.copy end global.get $~lib/memory/__stack_pointer @@ -22212,27 +22067,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 +22096,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 +22105,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 +22144,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 +22161,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 +22175,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 @@ -22367,28 +22222,28 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 - local.set $2 + local.tee $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 $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 @@ -22397,7 +22252,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 @@ -22406,31 +22261,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 @@ -22445,14 +22300,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,8 +22317,8 @@ i32.const 1712 return end + local.get $1 local.get $2 - local.get $3 i32.eq if global.get $~lib/memory/__stack_pointer @@ -22474,20 +22329,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 +22373,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 +22405,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 +22414,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 +22453,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 +22488,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 +22497,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 +22536,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 +22558,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 +22574,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 +22621,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 +22630,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 +22643,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 +22685,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 @@ -22930,25 +22781,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 1 i32.shr_u local.tee $4 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u local.tee $3 - i32.ge_u + i32.le_u if local.get $3 local.get $4 - i32.ge_u + i32.le_u if local.get $2 local.get $0 @@ -22980,29 +22831,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 +22866,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 +22885,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 return end end @@ -23054,350 +22905,343 @@ (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 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $7 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - i32.ge_u - if - local.get $4 - 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-inner0 - end - local.get $2 - i32.const 20 + block $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - local.get $7 - i32.eqz + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s if - local.get $3 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $4 + i32.const 42288 + i32.const 42336 i32.const 1 - i32.add - i32.mul - local.get $4 - i32.add i32.const 1 - i32.shl + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - call $~lib/rt/itcms/__new + i32.shr_u local.tee $5 - i32.store - local.get $5 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + 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 $3 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.shl - call $~lib/memory/memory.copy + 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.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 + local.get $6 + 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 local.get $3 - local.set $1 - loop $for-loop|0 + 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.set $4 + loop $while-continue|2 + local.get $0 + local.get $1 local.get $9 - i32.gt_u + call $~lib/string/String#indexOf + local.tee $6 + i32.const -1 + i32.xor if - local.get $1 + 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 - i32.load16_u - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.const 1 - i32.shl - local.get $5 - i32.add - local.get $2 - local.get $3 + local.get $11 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $1 - local.get $3 - i32.add - local.set $1 - local.get $9 - i32.const 1 + local.get $8 + local.get $11 i32.add - local.set $9 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - end - local.get $3 - local.get $7 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - local.tee $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 $10 - call $~lib/string/String#indexOf - local.tee $5 - i32.const -1 - i32.xor - if - local.get $5 + local.tee $8 i32.const 1 i32.shl - local.get $4 + local.get $10 i32.add local.get $2 local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $5 + local.get $3 + local.get $8 + i32.add + local.set $8 + local.get $6 local.get $7 i32.add - local.set $10 - br $while-continue|1 + 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 $4 - return - end - local.get $4 - local.set $5 - loop $while-continue|2 - local.get $0 - local.get $1 local.get $10 - call $~lib/string/String#indexOf - local.tee $9 - 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 $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $11 - i32.store offset=4 - end + local.get $4 local.get $5 - local.get $3 - local.get $8 local.get $9 - 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.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 $8 - i32.add - local.tee $10 - i32.const 1 - i32.shl - local.get $11 - i32.add - local.get $2 - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $10 - i32.add - local.set $8 - local.get $7 - local.get $9 i32.add - local.set $10 - br $while-continue|2 - end - end - local.get $11 - if - local.get $5 - local.get $8 - local.get $4 - 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 $8 - i32.const 1 - i32.shl - local.get $11 + 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 + global.get $~lib/memory/__stack_pointer + 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 $8 - 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 @@ -23493,24 +23337,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) @@ -23654,9 +23498,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 @@ -23669,10 +23514,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 +23531,7 @@ local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.eq local.get $4 select @@ -23699,7 +23544,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 +23553,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 @@ -23742,7 +23587,7 @@ if i32.const 1264 i32.const 15248 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -23762,7 +23607,7 @@ if i32.const 15296 i32.const 15248 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -23774,12 +23619,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 @@ -23798,14 +23643,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 @@ -23831,64 +23675,63 @@ 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.tee $1 + local.get $7 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $7 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $7 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $7 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $7 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $7 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $7 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $7 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $7 i32.const 100000000 i32.ge_u i32.add end end - local.get $5 + local.get $4 i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 @@ -23896,8 +23739,8 @@ local.tee $0 i32.store local.get $0 + local.get $7 local.get $1 - local.get $2 call $~lib/util/number/utoa32_dec_lut else local.get $1 @@ -23905,9 +23748,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 @@ -23922,9 +23765,9 @@ call $~lib/rt/itcms/__new 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 $1 i32.const 2 @@ -23938,7 +23781,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $2 i32.wrap_i64 i32.const 255 i32.and @@ -23948,10 +23791,10 @@ 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 @@ -23960,7 +23803,7 @@ i32.and if local.get $0 - local.get $3 + local.get $2 i32.wrap_i64 i32.const 6 i32.shl @@ -23972,17 +23815,17 @@ 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 i32.popcnt i32.const 1 i32.eq if i32.const 63 - local.get $3 + local.get $2 i64.clz i32.wrap_i64 i32.sub @@ -23997,23 +23840,23 @@ end 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 @@ -24022,14 +23865,14 @@ 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 $5 i64.div_u - local.set $3 + local.set $2 local.get $0 i32.const 1 i32.add @@ -24041,9 +23884,9 @@ i32.const 1 i32.sub end - local.get $5 + local.get $4 i32.add - local.tee $2 + local.tee $7 i32.const 1 i32.shl i32.const 1 @@ -24052,12 +23895,12 @@ i32.store 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 $5 + local.get $4 if local.get $0 i32.const 45 @@ -24070,8 +23913,8 @@ local.get $0 ) (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 +23936,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 +23967,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 $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.store - local.get $3 - local.get $1 + local.get $2 local.get $0 + local.get $1 call $~lib/util/number/utoa32_dec_lut else local.get $1 @@ -24201,27 +24042,25 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.store local.get $0 i64.extend_i32_u - local.set $2 - local.get $1 - local.set $0 + local.set $3 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 $3 - i32.add local.get $2 + i32.add + local.get $3 i32.wrap_i64 i32.const 255 i32.and @@ -24231,19 +24070,19 @@ 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 - local.get $0 + local.get $1 i32.const 1 i32.and if - local.get $3 local.get $2 + local.get $3 i32.wrap_i64 i32.const 6 i32.shl @@ -24257,15 +24096,15 @@ block $__inlined_func$~lib/util/number/ulog_base (result i32) local.get $0 i64.extend_i32_u - local.tee $5 - local.set $2 + local.tee $6 + local.set $3 local.get $1 i32.popcnt i32.const 1 i32.eq if i32.const 63 - local.get $2 + local.get $3 i64.clz i32.wrap_i64 i32.sub @@ -24280,19 +24119,19 @@ end local.get $1 i64.extend_i32_s - local.tee $6 + local.tee $5 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 +24144,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 $6 + local.get $3 + local.get $5 i64.div_u - local.set $2 + local.set $3 local.get $0 i32.const 1 i32.add @@ -24329,10 +24168,10 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.store - local.get $3 - local.get $5 + local.get $2 + local.get $6 local.get $0 local.get $1 call $~lib/util/number/utoa64_any_core @@ -24342,14 +24181,14 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 ) (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) - (local $5 i32) - (local $6 i64) + (local $5 i64) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -24368,14 +24207,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 +24243,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 +24298,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 +24457,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 +24483,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 +24501,7 @@ i32.const 1 i32.sub end - local.tee $5 + local.tee $6 i32.const 1 i32.shl i32.const 1 @@ -24672,7 +24510,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 +24522,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 +24546,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 +24593,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 +24642,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 +24707,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 +24736,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 +24773,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 +24791,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 +24811,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 +24883,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) @@ -25114,21 +24950,94 @@ 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 + 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..0f8eecf07f 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)) @@ -2255,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 @@ -4795,14 +4800,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 @@ -7273,7 +7281,7 @@ if i32.const 12624 i32.const 14224 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -7317,14 +7325,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 @@ -9270,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 @@ -26997,7 +27002,7 @@ if i32.const 240 i32.const 14224 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -27022,7 +27027,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 c50b5f8734..30c8aa5278 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 @@ -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 @@ -316,30 +314,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 +350,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 +365,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 +395,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 +432,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 +442,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 +580,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -621,7 +591,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -641,44 +611,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 +657,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -698,20 +667,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 +708,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 +735,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 +752,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 +781,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -824,7 +793,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -861,8 +830,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 @@ -939,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 @@ -986,271 +1028,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1328,183 +1295,7 @@ 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 $2 - i32.add - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $2 - 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 $1 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $1 - 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 $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - 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) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1566,18 +1357,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1588,54 +1378,51 @@ call $~lib/builtins/abort unreachable end + local.get $5 + 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 - 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 @@ -1643,16 +1430,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 +1448,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1669,9 +1456,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 +1469,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 +1484,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,163 +1502,275 @@ 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 $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 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.add - local.get $3 - i32.load - i32.const -4 i32.and + i32.const 24 i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 - 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.get $1 - i32.or - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $3 - i32.or - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $3 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $3 - i32.const 20 - i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + local.tee $3 + i32.add + local.set $1 local.get $0 - i32.const 20 + local.get $3 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.set $0 + loop $while-continue|0 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 + i32.const 32 + i32.ge_u if local.get $1 - call $~lib/rt/itcms/Object#makeGray + 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) @@ -2070,6 +1969,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -2092,7 +1992,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 @@ -2104,73 +2004,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2179,7 +2077,9 @@ 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) @@ -2189,6 +2089,7 @@ local.get $0 i32.load offset=4 local.get $1 + local.tee $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -2198,23 +2099,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 @@ -2227,20 +2128,21 @@ local.get $0 if 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 - local.get $2 + local.get $0 i32.const -2 i32.and local.set $0 @@ -2248,9 +2150,9 @@ end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.eqz if i32.const 1648 @@ -2260,7 +2162,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) @@ -2276,17 +2178,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 +2334,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 +2361,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 +2372,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 +2383,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 +2397,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 +2427,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 +2452,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 +2463,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 +2474,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 +2488,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 +2514,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 +2539,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 +2550,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 +2561,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 +2575,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 +2612,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 +2731,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 +2794,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 +2805,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 +2823,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 @@ -3243,34 +3117,85 @@ (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 $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 $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 + 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.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.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end end - return + local.get $0 + i32.const 12 + i32.add + local.set $0 + br $while-continue|0 end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit end - return + 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 +3206,7 @@ local.tee $0 i32.add local.set $2 - loop $while-continue|0 + loop $while-continue|01 local.get $0 local.get $2 i32.lt_u @@ -3293,60 +3218,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 - 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 + br $while-continue|01 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,6 +3335,7 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3457,22 +3352,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 +3377,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 @@ -3500,50 +3395,56 @@ i32.lt_s br_if $folding-inner1 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 @@ -3554,58 +3455,64 @@ i32.lt_s br_if $folding-inner1 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 +3520,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 @@ -3623,29 +3530,31 @@ i32.const 2700 i32.lt_s br_if $folding-inner1 + local.get $2 + local.set $0 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 + local.tee $1 if + local.get $1 local.get $0 - local.get $6 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 +3562,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 @@ -3673,117 +3582,123 @@ i32.lt_s 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 $4 + 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 $7 + 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 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 $0 + local.set $10 + local.get $3 + local.set $1 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 $1 + local.get $11 i32.store - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.load offset=4 i32.store offset=4 - local.get $0 - local.get $8 + local.get $1 + 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 $0 + local.get $11 + 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 $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 - 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 $5 + local.get $3 + i32.store offset=8 + 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,53 +3707,53 @@ 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 + local.tee $1 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 + local.get $1 i32.add - local.tee $0 + local.tee $1 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 $1 local.get $0 - local.get $6 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 $1 + 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 $0 + local.get $3 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer @@ -3846,11 +3761,10 @@ i32.add global.set $~lib/memory/__stack_pointer 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 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3861,9 +3775,10 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $2 + local.get $5 i32.load - local.get $6 + local.get $0 + local.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -3891,8 +3806,8 @@ 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,7 +3816,7 @@ i32.load local.set $0 block $__inlined_func$~lib/map/Map#find - loop $while-continue|00 + loop $while-continue|06 local.get $0 if local.get $0 @@ -3912,7 +3827,7 @@ if (result i32) i32.const 0 else - local.get $6 + local.get $3 local.get $0 i32.load i32.eq @@ -3922,7 +3837,7 @@ i32.const -2 i32.and local.set $0 - br $while-continue|00 + br $while-continue|06 end end i32.const 0 @@ -3933,20 +3848,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 +3869,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 @@ -3978,14 +3893,14 @@ 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 +3912,41 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $4 i32.store offset=4 - local.get $2 + local.get $5 i32.load offset=8 - local.tee $3 - local.get $2 + local.tee $1 + local.get $5 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $10 - local.get $1 + local.get $4 local.set $0 - loop $while-continue|01 - local.get $3 + loop $while-continue|00 + local.get $1 local.get $10 i32.ne if - local.get $3 + local.get $1 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $3 + local.get $1 i32.load - local.tee $5 + local.tee $11 i32.store local.get $0 - local.get $3 + local.get $1 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 +3955,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $5 + local.tee $11 i32.const 15 i32.shr_u - local.get $5 + local.get $11 i32.xor i32.const -2048144777 i32.mul - local.tee $5 + local.tee $11 i32.const 13 i32.shr_u - local.get $5 + local.get $11 i32.xor i32.const -1028477379 i32.mul - local.tee $5 + local.tee $11 i32.const 16 i32.shr_u - local.get $5 + local.get $11 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 +3991,41 @@ i32.add local.set $0 end - local.get $3 + local.get $1 i32.const 12 i32.add - local.set $3 - br $while-continue|01 + local.set $1 + br $while-continue|00 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 $4 i32.store offset=8 - local.get $2 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $4 + if + local.get $5 + local.get $4 + 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 +4034,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 $1 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $1 i32.const 12 i32.mul local.get $0 i32.add local.tee $0 - local.get $6 + local.get $3 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 +4091,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 +4142,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 +4360,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 +4418,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 @@ -4854,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 @@ -4879,7 +4799,7 @@ if i32.const 1536 i32.const 1584 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -4888,15 +4808,85 @@ 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 $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 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/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 5acb40dd14..ed4a37b46d 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)) @@ -1591,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 @@ -5691,7 +5696,7 @@ if i32.const 512 i32.const 560 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -5702,10 +5707,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 18df4d77cd..fe2e03facc 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))) @@ -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 @@ -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 @@ -876,30 +874,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 +910,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 +925,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 +955,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 +992,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 +1002,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 +1140,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1181,7 +1151,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1201,44 +1171,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 +1217,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1258,20 +1227,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 +1268,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 +1295,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 +1312,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 +1341,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1384,7 +1353,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1421,8 +1390,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,50 +1506,123 @@ 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) - 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 + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + 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 @@ -1596,226 +1638,152 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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) + (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 @@ -1893,19 +1861,11 @@ 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 @@ -1918,52 +1878,49 @@ 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 +1928,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 +1945,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 +1971,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -2024,13 +1981,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.get $3 i32.const 4 i32.add i32.const 15 @@ -2046,7 +2003,7 @@ local.get $2 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub local.tee $4 i32.const 16 @@ -2056,23 +2013,23 @@ local.get $2 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.tee $2 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -2096,12 +2053,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 +2068,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 +2083,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 +2100,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 +2115,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 +2125,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 +2142,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 +2162,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 +2194,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 +2293,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 @@ -2362,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 global.get $~lib/rt/itcms/white - local.get $3 + 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 @@ -2402,61 +2361,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 +2970,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 +3012,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 +3021,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 +3040,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 +3056,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 +3118,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 +3129,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 +3171,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 +3214,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 +3400,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 +3421,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 +3432,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 +3451,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 +3474,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 +3502,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 +3511,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -3620,52 +3523,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 +3593,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 +3627,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 +3694,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 +3722,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 +3741,7 @@ local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load local.tee $1 @@ -3836,13 +3753,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 +3770,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 +3900,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 +3975,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 +4131,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 +4158,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 +4169,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 +4180,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 +4194,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 +4224,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 +4249,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 +4260,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 +4271,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 +4285,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 +4311,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 +4336,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 +4347,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 +4358,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 +4372,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 +4409,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 +4528,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 +4591,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 +4602,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 +4620,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 @@ -4971,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 @@ -4982,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 @@ -4998,7 +4886,7 @@ if i32.const 1360 i32.const 1760 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -5008,6 +4896,7 @@ i32.load offset=4 i32.add i32.load8_s + local.get $3 i32.ne if i32.const 0 @@ -5030,7 +4919,7 @@ if i32.const 1360 i32.const 1760 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -5916,7 +5805,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -5925,28 +5814,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 +6017,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 +6034,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 +6125,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 +6164,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 +6181,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 +6211,7 @@ i64.sub i64.shl else - local.get $3 + local.get $5 i64.const 4503599627370495 i64.and i64.const 4503599627370496 @@ -6393,97 +6273,89 @@ 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 f64.eq ) - (func $~lib/typedarray/Int8Array#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=8 - 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.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 $4 + local.tee $6 i64.load local.tee $7 i64.const 8 @@ -6510,13 +6382,13 @@ i64.const 32 i64.rotr i64.store - local.get $4 local.get $6 + local.get $3 i64.const 16 i64.shr_u i64.const 281470681808895 i64.and - local.get $6 + local.get $3 i64.const 281470681808895 i64.and i64.const 16 @@ -6525,49 +6397,48 @@ 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 $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/typedarray/Int16Array#reverse (param $0 i32) (result i32) (local $1 i32) @@ -6577,50 +6448,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 +6498,7 @@ i32.rotr i32.store local.get $6 - local.get $8 + local.get $7 i32.store local.get $1 i32.const 2 @@ -6637,36 +6507,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 @@ -6714,14 +6584,14 @@ i32.load 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 i32.lt_s if - local.get $2 + local.get $4 local.get $0 i32.const 7728 local.get $0 @@ -6740,7 +6610,7 @@ 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 $3 i32.const 0 @@ -6749,9 +6619,9 @@ 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 $4 + local.set $2 loop $while-continue|0 local.get $0 local.get $3 @@ -6759,7 +6629,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.eqz @@ -6788,7 +6658,7 @@ 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 $3 i32.const 0 @@ -6797,9 +6667,9 @@ 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 $4 + local.set $2 loop $while-continue|02 local.get $0 local.get $3 @@ -6807,7 +6677,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -6839,7 +6709,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -6848,9 +6718,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|05 local.get $0 local.get $3 @@ -6858,7 +6728,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 255 @@ -6890,7 +6760,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -6899,9 +6769,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|08 local.get $0 local.get $3 @@ -6909,7 +6779,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -6941,7 +6811,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 2 @@ -6950,9 +6820,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|011 local.get $0 local.get $3 @@ -6960,7 +6830,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -6992,7 +6862,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 3 @@ -7001,9 +6871,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|014 local.get $0 local.get $3 @@ -7011,7 +6881,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -7043,7 +6913,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 4 @@ -7052,9 +6922,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|017 local.get $0 local.get $3 @@ -7062,7 +6932,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -7094,7 +6964,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 10 @@ -7103,9 +6973,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|020 local.get $0 local.get $3 @@ -7113,7 +6983,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 1 @@ -7143,36 +7013,35 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 - local.get $2 + 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.022 - local.get $3 + local.get $2 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 $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|023 - local.get $0 - local.get $3 + local.get $1 + local.get $2 i32.lt_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 @@ -7181,7 +7050,7 @@ local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end @@ -7201,43 +7070,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + 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 $4 + local.get $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 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub local.get $0 local.get $0 - local.get $4 + local.get $2 i32.ge_s select local.get $0 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 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 i32.add i32.load8_u i32.eqz @@ -7245,7 +7113,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -7263,43 +7131,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 local.get $0 - local.get $4 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub local.get $0 local.get $0 - local.get $4 + local.get $2 i32.ge_s select local.get $0 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 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 i32.add i32.load8_u i32.const 11 @@ -7308,7 +7175,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -7328,43 +7195,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 local.get $0 - local.get $4 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub local.get $0 local.get $0 - local.get $4 + local.get $2 i32.ge_s select local.get $0 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 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 i32.add i32.load8_u i32.const 255 @@ -7373,7 +7239,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -7393,43 +7259,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 local.get $0 - local.get $4 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub local.get $0 local.get $0 - local.get $4 + local.get $2 i32.ge_s select local.get $0 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 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 i32.add i32.load8_u i32.const 3 @@ -7438,7 +7303,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -7459,7 +7324,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -7473,9 +7338,9 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|024 local.get $0 i32.const 0 @@ -7483,7 +7348,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -7513,7 +7378,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -7527,9 +7392,9 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|027 local.get $0 i32.const 0 @@ -7537,7 +7402,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -7567,7 +7432,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -7581,9 +7446,9 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|030 local.get $0 i32.const 0 @@ -7591,7 +7456,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -7621,7 +7486,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -7635,9 +7500,9 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|033 local.get $0 i32.const 0 @@ -7645,7 +7510,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 1 @@ -7675,7 +7540,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -7683,18 +7548,17 @@ local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|036 - 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 i32.add i32.load8_u i32.const 1 @@ -7703,7 +7567,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|036 end end @@ -7724,7 +7588,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -7732,18 +7596,17 @@ local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|039 - 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 i32.add i32.load8_u i32.const 1 @@ -7752,7 +7615,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|039 end end @@ -7771,18 +7634,18 @@ 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 - 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 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7791,9 +7654,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|042 local.get $0 local.get $3 @@ -7801,7 +7664,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -7833,7 +7696,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7842,9 +7705,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|045 local.get $0 local.get $3 @@ -7852,7 +7715,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 4 @@ -7882,7 +7745,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7891,9 +7754,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|048 local.get $0 local.get $3 @@ -7901,7 +7764,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 @@ -7933,7 +7796,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7942,9 +7805,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|051 local.get $0 local.get $3 @@ -7952,7 +7815,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 9 @@ -7984,7 +7847,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7993,9 +7856,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|054 local.get $0 local.get $3 @@ -8003,7 +7866,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 10 @@ -8035,7 +7898,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -8044,9 +7907,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|057 local.get $0 local.get $3 @@ -8054,7 +7917,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -8086,7 +7949,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 1 @@ -8095,9 +7958,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|060 local.get $0 local.get $3 @@ -8105,7 +7968,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 @@ -8133,46 +7996,46 @@ 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/Int8Array,i8>|inlined.062 - local.get $2 + 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 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|063 - 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 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -8224,14 +8087,14 @@ i32.load 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 i32.lt_s if - local.get $2 + local.get $4 local.get $0 i32.const 7728 local.get $0 @@ -8251,7 +8114,7 @@ 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 $3 i32.const 0 @@ -8260,9 +8123,9 @@ 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 $4 + local.set $2 loop $while-continue|0 local.get $0 local.get $3 @@ -8270,7 +8133,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.eqz @@ -8299,7 +8162,7 @@ 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 $3 i32.const 0 @@ -8308,9 +8171,9 @@ 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 $4 + local.set $2 loop $while-continue|02 local.get $0 local.get $3 @@ -8318,7 +8181,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -8350,7 +8213,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -8359,9 +8222,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|05 local.get $0 local.get $3 @@ -8369,7 +8232,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 255 @@ -8401,7 +8264,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -8410,9 +8273,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|08 local.get $0 local.get $3 @@ -8420,7 +8283,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -8452,7 +8315,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 2 @@ -8461,9 +8324,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|011 local.get $0 local.get $3 @@ -8471,7 +8334,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -8503,7 +8366,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 3 @@ -8512,9 +8375,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|014 local.get $0 local.get $3 @@ -8522,7 +8385,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -8554,7 +8417,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 4 @@ -8563,9 +8426,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|017 local.get $0 local.get $3 @@ -8573,7 +8436,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -8605,7 +8468,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 10 @@ -8614,9 +8477,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|020 local.get $0 local.get $3 @@ -8624,7 +8487,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 1 @@ -8654,36 +8517,35 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 - local.get $2 + 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.022 - local.get $3 + local.get $2 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 $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|023 - local.get $0 - local.get $3 + local.get $1 + local.get $2 i32.lt_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 @@ -8692,7 +8554,7 @@ local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end @@ -8712,43 +8574,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + 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 $4 + local.get $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 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub local.get $0 local.get $0 - local.get $4 + local.get $2 i32.ge_s select local.get $0 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 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 i32.add i32.load8_u i32.eqz @@ -8756,7 +8617,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -8774,43 +8635,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $0 - local.get $4 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub local.get $0 local.get $0 - local.get $4 + local.get $2 i32.ge_s select local.get $0 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 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 i32.add i32.load8_u i32.const 11 @@ -8819,7 +8679,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -8839,43 +8699,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 local.get $0 - local.get $4 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub local.get $0 local.get $0 - local.get $4 + local.get $2 i32.ge_s select local.get $0 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 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 i32.add i32.load8_u i32.const 255 @@ -8884,7 +8743,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -8904,43 +8763,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $0 - local.get $4 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub local.get $0 local.get $0 - local.get $4 + local.get $2 i32.ge_s select local.get $0 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 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 i32.add i32.load8_u i32.const 3 @@ -8949,7 +8807,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -8970,7 +8828,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -8984,9 +8842,9 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|024 local.get $0 i32.const 0 @@ -8994,7 +8852,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -9024,7 +8882,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -9038,9 +8896,9 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|027 local.get $0 i32.const 0 @@ -9048,7 +8906,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -9078,7 +8936,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -9092,9 +8950,9 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|030 local.get $0 i32.const 0 @@ -9102,7 +8960,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -9132,7 +8990,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -9146,9 +9004,9 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|033 local.get $0 i32.const 0 @@ -9156,7 +9014,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 1 @@ -9186,7 +9044,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -9194,18 +9052,17 @@ local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|036 - 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 i32.add i32.load8_u i32.const 1 @@ -9214,7 +9071,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|036 end end @@ -9235,7 +9092,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -9243,18 +9100,17 @@ local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|039 - 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 i32.add i32.load8_u i32.const 1 @@ -9263,7 +9119,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|039 end end @@ -9282,17 +9138,17 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 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 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9301,9 +9157,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|042 local.get $0 local.get $3 @@ -9311,7 +9167,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -9343,7 +9199,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9352,9 +9208,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|045 local.get $0 local.get $3 @@ -9362,7 +9218,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 4 @@ -9392,7 +9248,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9401,9 +9257,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|048 local.get $0 local.get $3 @@ -9411,7 +9267,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 @@ -9443,7 +9299,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9452,9 +9308,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|051 local.get $0 local.get $3 @@ -9462,7 +9318,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 9 @@ -9494,7 +9350,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9503,9 +9359,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|054 local.get $0 local.get $3 @@ -9513,7 +9369,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 10 @@ -9545,7 +9401,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9554,9 +9410,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|057 local.get $0 local.get $3 @@ -9564,7 +9420,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -9596,7 +9452,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 1 @@ -9605,9 +9461,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|060 local.get $0 local.get $3 @@ -9615,7 +9471,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 @@ -9643,46 +9499,46 @@ 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/Uint8Array,u8>|inlined.062 - local.get $2 + 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 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|063 - 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 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -9734,14 +9590,14 @@ i32.load 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 i32.lt_s if - local.get $2 + local.get $4 local.get $0 i32.const 7728 local.get $0 @@ -9761,7 +9617,7 @@ 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 $3 i32.const 0 @@ -9770,9 +9626,9 @@ 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 $4 + local.set $2 loop $while-continue|0 local.get $0 local.get $3 @@ -9780,7 +9636,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.eqz @@ -9809,7 +9665,7 @@ 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 $3 i32.const 0 @@ -9818,9 +9674,9 @@ 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 $4 + local.set $2 loop $while-continue|02 local.get $0 local.get $3 @@ -9828,7 +9684,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -9860,7 +9716,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9869,9 +9725,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|05 local.get $0 local.get $3 @@ -9879,7 +9735,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 255 @@ -9911,7 +9767,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9920,9 +9776,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|08 local.get $0 local.get $3 @@ -9930,7 +9786,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -9962,7 +9818,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 2 @@ -9971,9 +9827,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|011 local.get $0 local.get $3 @@ -9981,7 +9837,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -10013,7 +9869,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 3 @@ -10022,9 +9878,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|014 local.get $0 local.get $3 @@ -10032,7 +9888,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -10064,7 +9920,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 4 @@ -10073,9 +9929,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|017 local.get $0 local.get $3 @@ -10083,7 +9939,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -10115,7 +9971,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 10 @@ -10124,9 +9980,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|020 local.get $0 local.get $3 @@ -10134,7 +9990,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 1 @@ -10164,36 +10020,35 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 - local.get $2 + 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.022 - local.get $3 + local.get $2 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 $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|023 - local.get $0 - local.get $3 + local.get $1 + local.get $2 i32.lt_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 @@ -10202,7 +10057,7 @@ local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end @@ -10222,43 +10077,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + 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 $4 + local.get $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 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub local.get $0 local.get $0 - local.get $4 + local.get $2 i32.ge_s select local.get $0 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 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 i32.add i32.load8_u i32.eqz @@ -10266,7 +10120,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -10284,43 +10138,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $0 - local.get $4 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub local.get $0 local.get $0 - local.get $4 + local.get $2 i32.ge_s select local.get $0 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 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 i32.add i32.load8_u i32.const 11 @@ -10329,7 +10182,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -10349,43 +10202,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 local.get $0 - local.get $4 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub local.get $0 local.get $0 - local.get $4 + local.get $2 i32.ge_s select local.get $0 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 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 i32.add i32.load8_u i32.const 255 @@ -10394,7 +10246,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -10414,43 +10266,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $0 - local.get $4 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub local.get $0 local.get $0 - local.get $4 + local.get $2 i32.ge_s select local.get $0 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 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 i32.add i32.load8_u i32.const 3 @@ -10459,7 +10310,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -10480,7 +10331,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -10494,9 +10345,9 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|024 local.get $0 i32.const 0 @@ -10504,7 +10355,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -10534,7 +10385,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -10548,9 +10399,9 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|027 local.get $0 i32.const 0 @@ -10558,7 +10409,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -10588,7 +10439,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -10602,9 +10453,9 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|030 local.get $0 i32.const 0 @@ -10612,7 +10463,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -10642,7 +10493,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -10656,9 +10507,9 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|033 local.get $0 i32.const 0 @@ -10666,7 +10517,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 1 @@ -10696,7 +10547,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -10704,18 +10555,17 @@ local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|036 - 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 i32.add i32.load8_u i32.const 1 @@ -10724,7 +10574,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|036 end end @@ -10745,7 +10595,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 - local.get $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -10753,18 +10603,17 @@ local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|039 - 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 i32.add i32.load8_u i32.const 1 @@ -10773,7 +10622,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|039 end end @@ -10792,17 +10641,17 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 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 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -10811,9 +10660,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|042 local.get $0 local.get $3 @@ -10821,7 +10670,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -10853,7 +10702,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -10862,9 +10711,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|045 local.get $0 local.get $3 @@ -10872,7 +10721,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 4 @@ -10902,7 +10751,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -10911,9 +10760,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|048 local.get $0 local.get $3 @@ -10921,7 +10770,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 @@ -10953,7 +10802,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -10962,9 +10811,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|051 local.get $0 local.get $3 @@ -10972,7 +10821,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 9 @@ -11004,7 +10853,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -11013,9 +10862,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|054 local.get $0 local.get $3 @@ -11023,7 +10872,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 10 @@ -11055,7 +10904,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -11064,9 +10913,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|057 local.get $0 local.get $3 @@ -11074,7 +10923,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -11106,7 +10955,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $2 + local.get $4 i32.load offset=8 local.tee $3 i32.const 1 @@ -11115,9 +10964,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|060 local.get $0 local.get $3 @@ -11125,7 +10974,7 @@ if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 @@ -11153,46 +11002,46 @@ 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/Uint8Array,u8>|inlined.062 - local.get $2 + 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 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|063 - 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 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -11208,6 +11057,85 @@ 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) @@ -11244,14 +11172,14 @@ i32.load local.tee $1 call $~lib/typedarray/Int16Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 i32.lt_s if - local.get $2 + local.get $4 local.get $0 i32.const 7728 local.get $0 @@ -11270,7 +11198,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -11280,9 +11208,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|0 local.get $0 local.get $3 @@ -11292,7 +11220,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.eqz @@ -11321,7 +11249,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -11331,9 +11259,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|02 local.get $0 local.get $3 @@ -11343,7 +11271,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 11 @@ -11375,7 +11303,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -11385,9 +11313,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|05 local.get $0 local.get $3 @@ -11397,7 +11325,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 65535 @@ -11429,7 +11357,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -11439,9 +11367,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|08 local.get $0 local.get $3 @@ -11451,7 +11379,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -11483,7 +11411,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -11494,9 +11422,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|011 local.get $0 local.get $3 @@ -11506,7 +11434,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -11538,7 +11466,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -11549,9 +11477,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|014 local.get $0 local.get $3 @@ -11561,7 +11489,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -11593,7 +11521,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -11604,9 +11532,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|017 local.get $0 local.get $3 @@ -11616,7 +11544,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -11648,7 +11576,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -11659,9 +11587,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|020 local.get $0 local.get $3 @@ -11671,7 +11599,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 1 @@ -11701,40 +11629,39 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 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/Int16Array,i16>|inlined.022 - local.get $3 + local.get $2 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 $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|023 - local.get $0 - local.get $3 + local.get $1 + local.get $2 i32.lt_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 @@ -11743,7 +11670,7 @@ local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end @@ -11763,62 +11690,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 $4 + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs if i32.const 0 i32.const 1568 @@ -11829,63 +11703,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 $4 + i32.const 11 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -11898,63 +11718,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 $4 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 +11733,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 $4 + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const 3 i32.ne if @@ -12036,14 +11748,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 $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.019 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $0 i32.const 1 i32.sub @@ -12053,9 +11765,9 @@ i32.le_u select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|024 local.get $0 i32.const 0 @@ -12065,12 +11777,12 @@ 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/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 @@ -12095,7 +11807,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12111,9 +11823,9 @@ i32.le_u select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|027 local.get $0 i32.const 0 @@ -12123,7 +11835,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -12153,7 +11865,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12169,9 +11881,9 @@ i32.le_u select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|030 local.get $0 i32.const 0 @@ -12181,7 +11893,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -12211,7 +11923,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12227,9 +11939,9 @@ i32.le_u select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|033 local.get $0 i32.const 0 @@ -12239,7 +11951,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 1 @@ -12269,7 +11981,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12279,20 +11991,19 @@ local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|036 - 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 1 @@ -12301,7 +12012,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|036 end end @@ -12322,7 +12033,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12332,20 +12043,19 @@ local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|039 - 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 1 @@ -12354,7 +12064,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|039 end end @@ -12373,17 +12083,17 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 9 call $~lib/typedarray/Int16Array#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/Int16Array,i16>|inlined.041 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12393,9 +12103,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|042 local.get $0 local.get $3 @@ -12405,7 +12115,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -12437,7 +12147,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12447,9 +12157,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|045 local.get $0 local.get $3 @@ -12459,7 +12169,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 4 @@ -12489,7 +12199,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12499,9 +12209,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|048 local.get $0 local.get $3 @@ -12511,7 +12221,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 5 @@ -12543,7 +12253,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12553,9 +12263,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|051 local.get $0 local.get $3 @@ -12565,7 +12275,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 9 @@ -12597,7 +12307,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12607,9 +12317,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|054 local.get $0 local.get $3 @@ -12619,7 +12329,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 10 @@ -12651,7 +12361,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12661,9 +12371,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|057 local.get $0 local.get $3 @@ -12673,7 +12383,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 11 @@ -12705,7 +12415,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12716,9 +12426,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|060 local.get $0 local.get $3 @@ -12728,7 +12438,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 5 @@ -12756,31 +12466,31 @@ 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.062 - local.get $2 + 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.062 - local.get $2 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|063 - 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 1 i32.shl local.get $2 @@ -12789,17 +12499,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -12851,14 +12561,14 @@ i32.load local.tee $1 call $~lib/typedarray/Uint16Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 i32.lt_s if - local.get $2 + local.get $4 local.get $0 i32.const 7728 local.get $0 @@ -12878,7 +12588,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12888,9 +12598,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|0 local.get $0 local.get $3 @@ -12900,7 +12610,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.eqz @@ -12929,7 +12639,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12939,9 +12649,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|02 local.get $0 local.get $3 @@ -12951,7 +12661,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 11 @@ -12983,7 +12693,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12993,9 +12703,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|05 local.get $0 local.get $3 @@ -13005,7 +12715,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 65535 @@ -13037,7 +12747,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -13047,9 +12757,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|08 local.get $0 local.get $3 @@ -13059,7 +12769,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -13091,7 +12801,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -13102,9 +12812,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|011 local.get $0 local.get $3 @@ -13114,7 +12824,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -13146,7 +12856,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -13157,9 +12867,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|014 local.get $0 local.get $3 @@ -13169,7 +12879,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -13201,7 +12911,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -13212,9 +12922,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|017 local.get $0 local.get $3 @@ -13224,7 +12934,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -13256,7 +12966,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -13267,9 +12977,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|020 local.get $0 local.get $3 @@ -13279,7 +12989,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 1 @@ -13309,40 +13019,39 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 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/Uint16Array,u16>|inlined.022 - local.get $3 + local.get $2 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 $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|023 - local.get $0 - local.get $3 + local.get $1 + local.get $2 i32.lt_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 @@ -13351,7 +13060,7 @@ local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end @@ -13371,62 +13080,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/Uint16Array,u16>|inlined.0 - local.get $4 - 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 - 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/Uint16Array,u16>|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 $4 + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs if i32.const 0 i32.const 1568 @@ -13437,63 +13093,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/Uint16Array,u16>|inlined.05 - local.get $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|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/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 + local.get $4 + i32.const 11 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -13506,63 +13108,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 $4 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 - 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 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -13575,63 +13123,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/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 - 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 + local.get $4 + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const 3 i32.ne if @@ -13644,14 +13138,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + 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.019 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 local.get $0 i32.const 1 i32.sub @@ -13661,9 +13155,9 @@ i32.le_u select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|024 local.get $0 i32.const 0 @@ -13673,12 +13167,12 @@ 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/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 local.get $1 i32.const 1 i32.sub @@ -13703,7 +13197,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -13719,9 +13213,9 @@ i32.le_u select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|027 local.get $0 i32.const 0 @@ -13731,7 +13225,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -13761,7 +13255,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -13777,9 +13271,9 @@ i32.le_u select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|030 local.get $0 i32.const 0 @@ -13789,7 +13283,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -13819,7 +13313,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -13835,9 +13329,9 @@ i32.le_u select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|033 local.get $0 i32.const 0 @@ -13847,7 +13341,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 1 @@ -13877,7 +13371,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -13887,20 +13381,19 @@ local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|036 - 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 1 @@ -13909,7 +13402,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|036 end end @@ -13930,7 +13423,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -13940,20 +13433,19 @@ local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|039 - 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 1 @@ -13962,7 +13454,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|039 end end @@ -13981,17 +13473,17 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 9 call $~lib/typedarray/Uint16Array#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/Uint16Array,u16>|inlined.041 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -14001,9 +13493,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|042 local.get $0 local.get $3 @@ -14013,7 +13505,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -14045,7 +13537,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -14055,9 +13547,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|045 local.get $0 local.get $3 @@ -14067,7 +13559,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 4 @@ -14097,7 +13589,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -14107,9 +13599,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|048 local.get $0 local.get $3 @@ -14119,7 +13611,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 5 @@ -14151,7 +13643,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -14161,9 +13653,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|051 local.get $0 local.get $3 @@ -14173,7 +13665,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 9 @@ -14205,7 +13697,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -14215,9 +13707,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|054 local.get $0 local.get $3 @@ -14227,7 +13719,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 10 @@ -14259,7 +13751,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -14269,9 +13761,9 @@ select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|057 local.get $0 local.get $3 @@ -14281,7 +13773,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 11 @@ -14313,7 +13805,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 - local.get $2 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -14324,9 +13816,9 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|060 local.get $0 local.get $3 @@ -14336,7 +13828,7 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 5 @@ -14364,31 +13856,31 @@ 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.062 - local.get $2 + 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.062 - local.get $2 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|063 - 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 1 i32.shl local.get $2 @@ -14397,17 +13889,17 @@ i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -14445,83 +13937,80 @@ 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/Int32Array#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 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 + i32.const -1 + local.set $0 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 $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 $4 + local.get $2 i32.add 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 @@ -14531,49 +14020,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/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 + local.set $2 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 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load 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 + 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 @@ -14585,49 +14071,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/Int32Array,i32>|inlined.04 - 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.04 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 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 - 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 @@ -14639,49 +14122,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/Int32Array,i32>|inlined.07 - 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.07 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 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 - 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 @@ -14693,50 +14173,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/Int32Array,i32>|inlined.010 - local.get $2 + 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 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 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 - 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 @@ -14748,50 +14228,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/Int32Array,i32>|inlined.013 - local.get $2 + 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 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 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 - 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 @@ -14803,50 +14283,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/Int32Array,i32>|inlined.016 - local.get $2 + 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 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 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 - 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 @@ -14858,50 +14338,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/Int32Array,i32>|inlined.019 - local.get $2 + 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 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 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 - 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 @@ -14913,20 +14393,20 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 - local.get $2 + 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 + local.get $2 i32.const 100 i32.sub local.tee $1 @@ -14936,25 +14416,24 @@ i32.gt_s select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|023 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 + local.get $0 i32.const 1 i32.add local.set $0 @@ -14962,9 +14441,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 @@ -14977,52 +14456,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 +14507,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 if i32.const 0 i32.const 1568 @@ -15043,53 +14518,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 +14570,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const -1 i32.ne if @@ -15112,53 +14583,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 +14635,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const -1 i32.ne if @@ -15181,53 +14648,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 +14700,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const 3 i32.ne if @@ -15249,53 +14712,53 @@ 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 $2 + 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.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 + local.tee $0 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.019 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -15307,53 +14770,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 - local.get $2 + 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.026 - local.get $0 + 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 $3 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|027 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -15365,53 +14828,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 - local.get $2 + 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.029 - local.get $0 + 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 $3 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|030 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -15423,53 +14886,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 - local.get $2 + 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.032 - local.get $0 + 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 $3 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|033 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.sub - 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 1 i32.ne if @@ -15481,38 +14944,37 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 - local.get $2 + 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 + local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|036 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 + local.get $0 i32.const 1 i32.sub local.set $0 @@ -15520,9 +14982,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 @@ -15534,38 +14996,37 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 - local.get $2 + 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 + local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|039 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 + local.get $0 i32.const 1 i32.sub local.set $0 @@ -15573,9 +15034,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 @@ -15587,56 +15048,53 @@ 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 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|042 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -15648,49 +15106,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/Int32Array,i32>|inlined.044 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|045 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -15700,49 +15155,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/Int32Array,i32>|inlined.047 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|048 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -15754,49 +15206,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/Int32Array,i32>|inlined.050 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|051 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -15808,49 +15257,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/Int32Array,i32>|inlined.053 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|054 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -15862,49 +15308,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/Int32Array,i32>|inlined.056 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|057 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -15916,50 +15359,50 @@ unreachable end i32.const 1 - 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.059 - local.get $2 + 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 + local.get $2 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|060 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -15975,30 +15418,30 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 - local.get $2 + 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 + local.get $2 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 - local.get $2 + local.get $4 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|063 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 @@ -16052,83 +15495,80 @@ 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/Uint32Array#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 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 + i32.const -1 + local.set $0 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 $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 $4 + local.get $2 i32.add 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 @@ -16138,49 +15578,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/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 + local.set $2 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 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load 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 + 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 @@ -16192,49 +15629,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/Uint32Array,u32>|inlined.04 - 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.04 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 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 - 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 @@ -16246,49 +15680,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/Uint32Array,u32>|inlined.07 - 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.07 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 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 - 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 @@ -16300,50 +15731,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/Uint32Array,u32>|inlined.010 - local.get $2 + 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 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 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 - 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 @@ -16355,50 +15786,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/Uint32Array,u32>|inlined.013 - local.get $2 + 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 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 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 - 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 @@ -16410,50 +15841,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/Uint32Array,u32>|inlined.016 - local.get $2 + 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 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 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 - 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 @@ -16465,50 +15896,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/Uint32Array,u32>|inlined.019 - local.get $2 + 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 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 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 - 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 @@ -16520,20 +15951,20 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 - local.get $2 + 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 + local.get $2 i32.const 100 i32.sub local.tee $1 @@ -16543,25 +15974,24 @@ i32.gt_s select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|023 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 + local.get $0 i32.const 1 i32.add local.set $0 @@ -16569,9 +15999,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 @@ -16584,52 +16014,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 +16065,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 if i32.const 0 i32.const 1568 @@ -16650,53 +16076,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 +16128,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const -1 i32.ne if @@ -16719,53 +16141,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 +16193,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const -1 i32.ne if @@ -16788,53 +16206,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 +16258,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const 3 i32.ne if @@ -16856,53 +16270,53 @@ 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 $2 + 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.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 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 + local.tee $0 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.019 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -16914,53 +16328,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 - local.get $2 + 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.026 - local.get $0 + 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 $3 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|027 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -16972,53 +16386,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 - local.get $2 + 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.029 - local.get $0 + 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 $3 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|030 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -17030,53 +16444,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 - local.get $2 + 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.032 - local.get $0 + 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 $3 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|033 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.sub - 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 1 i32.ne if @@ -17088,38 +16502,37 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 - local.get $2 + 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 + local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|036 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 + local.get $0 i32.const 1 i32.sub local.set $0 @@ -17127,9 +16540,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 @@ -17141,38 +16554,37 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 - local.get $2 + 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 + local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|039 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 + local.get $0 i32.const 1 i32.sub local.set $0 @@ -17180,9 +16592,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 @@ -17194,55 +16606,52 @@ 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 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|042 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -17254,49 +16663,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/Uint32Array,u32>|inlined.044 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|045 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -17306,49 +16712,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/Uint32Array,u32>|inlined.047 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|048 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -17360,49 +16763,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/Uint32Array,u32>|inlined.050 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|051 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -17414,49 +16814,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/Uint32Array,u32>|inlined.053 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|054 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -17468,49 +16865,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/Uint32Array,u32>|inlined.056 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|057 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -17522,50 +16916,50 @@ unreachable end i32.const 1 - 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.059 - local.get $2 + 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 + local.get $2 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|060 - local.get $0 - local.get $3 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -17581,30 +16975,30 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 - local.get $2 + 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 + local.get $2 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 - local.get $2 + local.get $4 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|063 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 @@ -17658,84 +17052,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/Int64Array#constructor - local.tee $2 + local.tee $4 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 $4 + 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 + 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 $3 - i32.const 0 - local.get $3 - select 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 $4 + local.set $2 loop $while-continue|0 - local.get $0 + 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 $4 + 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 @@ -17745,49 +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 $3 - i32.const 0 - local.get $3 - select 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 $4 + local.set $2 loop $while-continue|02 - local.get $0 + 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 $4 + 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 + 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 @@ -17799,49 +17187,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.04 - local.get $2 + 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.04 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|05 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const -1 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|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 @@ -17853,49 +17238,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.07 - local.get $2 + 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.07 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|08 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|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 @@ -17907,11 +17289,11 @@ 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/Int64Array,i64>|inlined.010 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -17922,35 +17304,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.010 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|011 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|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 @@ -17962,11 +17344,11 @@ 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/Int64Array,i64>|inlined.013 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -17977,35 +17359,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|014 - local.get $0 + 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 $4 + 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 + 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 @@ -18017,11 +17399,11 @@ 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/Int64Array,i64>|inlined.016 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -18032,35 +17414,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.016 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|017 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|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 @@ -18072,11 +17454,11 @@ 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/Int64Array,i64>|inlined.019 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -18087,35 +17469,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|020 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 1 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|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 @@ -18127,48 +17509,47 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 - local.get $2 + 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.022 - local.get $3 + local.get $2 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.get $4 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|023 local.get $0 - local.get $3 + local.get $2 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 + local.get $0 i32.const 1 i32.add local.set $0 @@ -18176,9 +17557,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 @@ -18191,62 +17572,62 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add 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 $0 + local.set $1 br $while-continue|00 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 @@ -18257,63 +17638,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load 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 $0 + local.set $1 br $while-continue|06 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -18326,63 +17707,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load 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 $0 + 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 i32.const -1 i32.ne if @@ -18395,63 +17776,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load 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 $0 + local.set $1 br $while-continue|018 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -18463,53 +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 $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 $4 + local.set $2 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + 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 + 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 @@ -18521,53 +17902,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 - local.get $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.026 - local.get $0 + 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 $4 + local.set $2 loop $while-continue|027 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -18579,53 +17960,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 - local.get $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.029 - local.get $0 + 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 $4 + local.set $2 loop $while-continue|030 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -18637,53 +18018,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 - local.get $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.032 - local.get $0 + 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 $4 + local.set $2 loop $while-continue|033 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 1 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 - local.get $1 + local.get $0 i32.const 1 i32.sub - 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 1 i32.ne if @@ -18695,38 +18076,37 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 - local.get $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.035 - local.get $0 + local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|036 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 + local.get $0 i32.const 1 i32.sub local.set $0 @@ -18734,9 +18114,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 @@ -18748,38 +18128,37 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 - local.get $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.038 - local.get $0 + local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|039 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 + local.get $0 i32.const 1 i32.sub local.set $0 @@ -18787,9 +18166,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 @@ -18801,55 +18180,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 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 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|042 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -18861,49 +18237,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.044 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|045 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -18913,49 +18286,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.047 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|048 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -18967,49 +18337,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.050 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|051 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -19021,49 +18388,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.053 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|054 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -19075,49 +18439,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.056 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|057 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -19129,11 +18490,11 @@ unreachable end i32.const 1 - 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.059 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -19144,35 +18505,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|060 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -19188,23 +18549,23 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.062 - local.get $2 + 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 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|063 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -19265,84 +18626,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/Uint64Array#constructor - local.tee $2 + local.tee $4 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 $4 + 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 + 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 $3 - i32.const 0 - local.get $3 - select 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 $4 + local.set $2 loop $while-continue|0 - local.get $0 + 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 $4 + 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 @@ -19352,49 +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 $3 - i32.const 0 - local.get $3 - select 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 $4 + local.set $2 loop $while-continue|02 - local.get $0 + 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 $4 + 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 + 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 @@ -19406,49 +18761,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.04 - local.get $2 + 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.04 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|05 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const -1 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|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 @@ -19460,49 +18812,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.07 - local.get $2 + 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.07 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|08 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|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 @@ -19514,11 +18863,11 @@ 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/Uint64Array,u64>|inlined.010 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -19529,35 +18878,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.010 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|011 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|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 @@ -19569,11 +18918,11 @@ 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/Uint64Array,u64>|inlined.013 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -19584,35 +18933,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|014 - local.get $0 + 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 $4 + 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 + 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 @@ -19624,11 +18973,11 @@ 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/Uint64Array,u64>|inlined.016 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -19639,35 +18988,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|017 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|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 @@ -19679,11 +19028,11 @@ 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/Uint64Array,u64>|inlined.019 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -19694,35 +19043,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|020 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 1 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|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 @@ -19734,48 +19083,47 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 - local.get $2 + 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.022 - local.get $3 + local.get $2 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.get $4 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|023 local.get $0 - local.get $3 + local.get $2 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 + local.get $0 i32.const 1 i32.add local.set $0 @@ -19783,9 +19131,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 @@ -19798,62 +19146,62 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add 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 $0 + local.set $1 br $while-continue|00 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 @@ -19864,63 +19212,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load 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 $0 + local.set $1 br $while-continue|06 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -19933,63 +19281,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load 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 $0 + 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 i32.const -1 i32.ne if @@ -20002,63 +19350,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load 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 $0 + local.set $1 br $while-continue|018 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -20070,53 +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 $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 $4 + local.set $2 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + 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 + 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 @@ -20128,53 +19476,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 - local.get $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.026 - local.get $0 + 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 $4 + local.set $2 loop $while-continue|027 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -20186,53 +19534,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 - local.get $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.029 - local.get $0 + 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 $4 + local.set $2 loop $while-continue|030 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -20244,53 +19592,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 - local.get $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.032 - local.get $0 + 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 $4 + local.set $2 loop $while-continue|033 - local.get $0 + 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 $4 + local.get $2 i32.add i64.load i64.const 1 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 - local.get $1 + local.get $0 i32.const 1 i32.sub - 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 1 i32.ne if @@ -20302,38 +19650,37 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 - local.get $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.035 - local.get $0 + local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|036 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 + local.get $0 i32.const 1 i32.sub local.set $0 @@ -20341,9 +19688,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 @@ -20355,38 +19702,37 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 - local.get $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.038 - local.get $0 + local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|039 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 + local.get $0 i32.const 1 i32.sub local.set $0 @@ -20394,9 +19740,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 @@ -20408,55 +19754,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 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 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.041 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|042 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -20468,49 +19811,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.044 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|045 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -20520,49 +19860,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.047 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|048 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -20574,49 +19911,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.050 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|051 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -20628,49 +19962,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.053 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|054 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -20682,49 +20013,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.056 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|057 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -20736,11 +20064,11 @@ unreachable end i32.const 1 - 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.059 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -20751,35 +20079,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|060 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -20795,23 +20123,23 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.062 - local.get $2 + 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 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|063 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -20872,85 +20200,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/Float32Array#constructor - local.tee $2 + local.tee $4 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 $4 + 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 + 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 $3 - i32.const 0 - local.get $3 - select 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 $4 + local.set $2 loop $while-continue|0 - local.get $0 + 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 $4 + 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 @@ -20960,49 +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 $3 - i32.const 0 - local.get $3 - select 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 $4 + local.set $2 loop $while-continue|02 - local.get $0 + 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 $4 + 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 + 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 @@ -21014,49 +20336,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.04 - local.get $2 + 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.04 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|05 - local.get $0 + 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 $4 + local.get $2 i32.add f32.load f32.const -1 f32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|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 @@ -21068,49 +20387,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.07 - local.get $2 + 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.07 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|08 - local.get $0 + 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 $4 + local.get $2 i32.add f32.load f32.const 3 f32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|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 @@ -21122,11 +20438,11 @@ 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/Float32Array,f32>|inlined.010 - local.get $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u @@ -21137,35 +20453,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.010 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|011 - local.get $0 + 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 $4 + local.get $2 i32.add f32.load f32.const 3 f32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|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 @@ -21177,11 +20493,11 @@ 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/Float32Array,f32>|inlined.013 - local.get $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u @@ -21192,35 +20508,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|014 - local.get $0 + 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 $4 + 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 + 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 @@ -21232,11 +20548,11 @@ 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/Float32Array,f32>|inlined.016 - local.get $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u @@ -21247,35 +20563,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.016 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|017 - local.get $0 + 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 $4 + local.get $2 i32.add f32.load f32.const 3 f32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|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 @@ -21287,11 +20603,11 @@ 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/Float32Array,f32>|inlined.019 - local.get $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u @@ -21302,35 +20618,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|020 - local.get $0 + 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 $4 + local.get $2 i32.add f32.load f32.const 1 f32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|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 @@ -21342,48 +20658,47 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 - local.get $2 + 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.022 - local.get $3 + local.get $2 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.get $4 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|023 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 f32.load f32.const 1 f32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 - local.get $1 + local.get $0 i32.const 1 i32.add local.set $0 @@ -21391,9 +20706,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 @@ -21406,63 +20721,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load 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 $0 + local.set $1 br $while-continue|00 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 @@ -21473,63 +20788,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load 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 $0 + local.set $1 br $while-continue|06 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -21542,63 +20857,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load 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 $0 + 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 i32.const -1 i32.ne if @@ -21611,63 +20926,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load 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 $0 + local.set $1 br $while-continue|018 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -21679,53 +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 $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 $4 + local.set $2 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 + local.tee $0 i32.const 2 i32.shl - local.get $4 + 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 + 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 @@ -21737,53 +21052,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 - local.get $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.026 - local.get $0 + 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 $4 + local.set $2 loop $while-continue|027 - local.get $0 + 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 $4 + local.get $2 i32.add f32.load f32.const 3 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -21795,53 +21110,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 - local.get $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.029 - local.get $0 + 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 $4 + local.set $2 loop $while-continue|030 - local.get $0 + 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 $4 + local.get $2 i32.add f32.load f32.const 3 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -21853,53 +21168,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 - local.get $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.032 - local.get $0 + 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 $4 + local.set $2 loop $while-continue|033 - local.get $0 + 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 $4 + local.get $2 i32.add f32.load f32.const 1 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 - local.get $1 + local.get $0 i32.const 1 i32.sub - 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 1 i32.ne if @@ -21911,38 +21226,37 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 - local.get $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.035 - local.get $0 + local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|036 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 + local.get $0 i32.const 1 i32.sub local.set $0 @@ -21950,9 +21264,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 @@ -21964,38 +21278,37 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 - local.get $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.038 - local.get $0 + local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|039 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 + local.get $0 i32.const 1 i32.sub local.set $0 @@ -22003,9 +21316,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 @@ -22017,55 +21330,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 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 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|042 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -22077,49 +21387,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.044 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|045 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -22129,49 +21436,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.047 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|048 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -22183,49 +21487,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.050 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|051 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -22237,49 +21538,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.053 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|054 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -22291,49 +21589,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.056 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|057 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -22345,11 +21640,11 @@ unreachable end i32.const 1 - 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.059 - local.get $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u @@ -22360,35 +21655,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|060 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -22404,23 +21699,23 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.062 - local.get $2 + 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 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|063 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -22481,85 +21776,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/Float64Array#constructor - local.tee $2 + local.tee $4 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 $4 + 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 + 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 $3 - i32.const 0 - local.get $3 - select 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 $4 + local.set $2 loop $while-continue|0 - local.get $0 + 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 $4 + 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 @@ -22569,49 +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 $3 - i32.const 0 - local.get $3 - select 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 $4 + local.set $2 loop $while-continue|02 - local.get $0 + 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 $4 + 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 + 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 @@ -22623,49 +21912,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.04 - local.get $2 + 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.04 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|05 - local.get $0 + 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 $4 + local.get $2 i32.add f64.load f64.const -1 f64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|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 @@ -22677,49 +21963,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.07 - local.get $2 + 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.07 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|08 - local.get $0 + 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 $4 + local.get $2 i32.add f64.load f64.const 3 f64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|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 @@ -22731,11 +22014,11 @@ 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/Float64Array,f64>|inlined.010 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -22746,35 +22029,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|011 - local.get $0 + 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 $4 + local.get $2 i32.add f64.load f64.const 3 f64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|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 @@ -22786,11 +22069,11 @@ 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/Float64Array,f64>|inlined.013 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -22801,35 +22084,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|014 - local.get $0 + 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 $4 + 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 + 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 @@ -22841,11 +22124,11 @@ 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/Float64Array,f64>|inlined.016 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -22856,35 +22139,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.016 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|017 - local.get $0 + 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 $4 + local.get $2 i32.add f64.load f64.const 3 f64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|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 @@ -22896,11 +22179,11 @@ 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/Float64Array,f64>|inlined.019 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -22911,35 +22194,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|020 - local.get $0 + 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 $4 + local.get $2 i32.add f64.load f64.const 1 f64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|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 @@ -22951,48 +22234,47 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 - local.get $2 + 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.022 - local.get $3 + local.get $2 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.get $4 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|023 local.get $0 - local.get $3 + local.get $2 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 + local.get $0 i32.const 1 i32.add local.set $0 @@ -23000,9 +22282,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 @@ -23015,63 +22297,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load 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 $0 + local.set $1 br $while-continue|00 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 @@ -23082,63 +22364,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load 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 $0 + local.set $1 br $while-continue|06 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -23151,63 +22433,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load 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 $0 + 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 i32.const -1 i32.ne if @@ -23220,63 +22502,63 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 - 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 $4 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $1 + local.get $1 + local.get $2 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $4 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load 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 $0 + local.set $1 br $while-continue|018 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -23288,53 +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 $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 $4 + local.set $2 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 + local.tee $0 i32.const 3 i32.shl - local.get $4 + 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 + 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 @@ -23346,53 +22628,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 - local.get $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.026 - local.get $0 + 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 $4 + local.set $2 loop $while-continue|027 - local.get $0 + 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 $4 + local.get $2 i32.add f64.load f64.const 3 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -23404,53 +22686,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 - local.get $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.029 - local.get $0 + 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 $4 + local.set $2 loop $while-continue|030 - local.get $0 + 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 $4 + local.get $2 i32.add f64.load f64.const 3 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 + 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 @@ -23462,53 +22744,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 - local.get $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.032 - local.get $0 + 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 $4 + local.set $2 loop $while-continue|033 - local.get $0 + 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 $4 + local.get $2 i32.add f64.load f64.const 1 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 - local.get $1 + local.get $0 i32.const 1 i32.sub - 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 1 i32.ne if @@ -23520,38 +22802,37 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 - local.get $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.035 - local.get $0 + local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|036 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 + local.get $0 i32.const 1 i32.sub local.set $0 @@ -23559,9 +22840,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 @@ -23573,38 +22854,37 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 - local.get $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.038 - local.get $0 + local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|039 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 + local.get $0 i32.const 1 i32.sub local.set $0 @@ -23612,9 +22892,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 @@ -23626,56 +22906,53 @@ 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 $2 + local.tee $4 i32.store offset=8 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.041 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|042 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -23687,49 +22964,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.044 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|045 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -23739,49 +23013,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.047 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|048 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -23793,49 +23064,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.050 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|051 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -23847,49 +23115,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.053 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|054 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -23901,49 +23166,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.056 - local.get $2 + 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 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|057 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -23955,11 +23217,11 @@ unreachable end i32.const 1 - 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.059 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -23970,35 +23232,35 @@ local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|060 - local.get $0 + 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 $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 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + 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 @@ -24014,23 +23276,23 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.062 - local.get $2 + 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 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|063 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -24175,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 @@ -24210,59 +23471,56 @@ 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 end end - local.set $1 - local.get $0 - local.get $3 - local.get $1 local.get $2 i32.add local.tee $0 @@ -24278,11 +23536,9 @@ (local $6 i32) local.get $0 i32.load offset=4 - local.set $3 + local.set $5 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 @@ -24303,10 +23559,10 @@ 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 $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -24318,105 +23574,104 @@ local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $2 - i32.eqz - if - local.get $3 - i32.load8_s - call $~lib/util/number/itoa32 - local.set $0 - br $folding-inner0 - end + 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 - local.get $2 - 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.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 - local.get $2 + 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 $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.lt_s + if + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 local.get $5 - i32.gt_s + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 - i32.add - local.get $3 - local.get $5 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 + i32.const 9584 local.get $4 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.set $0 - end - local.get $5 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add - local.set $5 - 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 $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.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 - 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 @@ -24430,6 +23685,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -24452,7 +23708,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 @@ -24464,73 +23720,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -24539,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 @@ -24560,62 +23815,60 @@ i32.const 1 return end + local.get $0 local.get $1 i32.const 255 i32.and - local.tee $2 - 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 end end - local.set $1 - local.get $0 - local.get $2 - local.get $1 + local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $0 ) (func $~lib/typedarray/Uint8Array#join (param $0 i32) (result i32) (local $1 i32) @@ -24626,11 +23879,9 @@ (local $6 i32) local.get $0 i32.load offset=4 - local.set $3 + local.set $5 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 @@ -24651,10 +23902,10 @@ 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 $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -24666,105 +23917,104 @@ local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $2 - i32.eqz - if - local.get $3 - i32.load8_u - call $~lib/util/number/utoa32 - local.set $0 - br $folding-inner0 - end + 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 - local.get $2 - 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.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 - local.get $2 + 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 $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.lt_s + if + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 local.get $5 - i32.gt_s + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 - i32.add - local.get $3 - local.get $5 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 + i32.const 9584 local.get $4 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.set $0 - end - local.get $5 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add - local.set $5 - 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 $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 $1 - i32.add - local.get $2 - local.get $3 - 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 $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 @@ -24776,7 +24026,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.extend16_s i32.const 0 @@ -24811,59 +24060,56 @@ 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 end end - local.set $1 - local.get $0 - local.get $3 - local.get $1 local.get $2 i32.add local.tee $0 @@ -24879,13 +24125,11 @@ (local $6 i32) local.get $0 i32.load offset=4 - local.set $3 + local.set $5 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 @@ -24906,10 +24150,10 @@ 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 $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -24921,109 +24165,108 @@ local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $2 - i32.eqz - if - local.get $3 - i32.load16_s - call $~lib/util/number/itoa32 - local.set $0 - br $folding-inner0 - 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 - local.get $2 - 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.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 - local.get $2 + 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 $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.lt_s + if + 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.gt_s + i32.add + i32.load16_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 if - local.get $0 - i32.const 1 - i32.shl local.get $1 - i32.add - local.get $5 i32.const 1 i32.shl - local.get $3 - i32.add - i32.load16_s - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 + i32.const 9584 local.get $4 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.set $0 - end - local.get $5 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add - local.set $5 - 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 $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.const 1 - i32.shl local.get $1 - i32.add - local.get $2 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_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 $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 @@ -25034,7 +24277,6 @@ 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 @@ -25051,62 +24293,60 @@ i32.const 1 return end + local.get $0 local.get $1 i32.const 65535 i32.and - local.tee $2 - 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 end end - local.set $1 - local.get $0 - local.get $2 - local.get $1 + local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $0 ) (func $~lib/typedarray/Uint16Array#join (param $0 i32) (result i32) (local $1 i32) @@ -25117,13 +24357,11 @@ (local $6 i32) local.get $0 i32.load offset=4 - local.set $3 + local.set $5 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 @@ -25144,10 +24382,10 @@ 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 $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -25159,109 +24397,108 @@ local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $2 - i32.eqz - if - local.get $3 - i32.load16_u - call $~lib/util/number/utoa32 - local.set $0 - br $folding-inner0 - 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 - local.get $2 - 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.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 - local.get $2 + 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 $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.lt_s + if + 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.gt_s + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 if - local.get $0 - i32.const 1 - i32.shl local.get $1 - i32.add - local.get $5 i32.const 1 i32.shl - local.get $3 - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 + i32.const 9584 local.get $4 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.set $0 - end - local.get $5 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add - local.set $5 - 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 $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.const 1 - i32.shl local.get $1 - i32.add - local.get $2 - i32.const 1 - i32.shl - local.get $3 - 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 $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 @@ -25307,47 +24544,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 @@ -25368,13 +24604,11 @@ (local $6 i32) local.get $0 i32.load offset=4 - local.set $3 + local.set $5 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 @@ -25395,10 +24629,10 @@ 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 $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -25410,109 +24644,108 @@ local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $2 - i32.eqz - if - local.get $3 - i32.load - call $~lib/util/number/itoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9580 + local.get $6 + i32.eqz + if + local.get $5 i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 11 - i32.add - i32.mul - i32.const 11 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + 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 - local.get $2 + 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 $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.lt_s + if + 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.gt_s + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 if - local.get $0 - i32.const 1 - i32.shl local.get $1 - i32.add - local.get $5 - i32.const 2 + i32.const 1 i32.shl - local.get $3 - i32.add - i32.load - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 + i32.const 9584 local.get $4 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.set $0 - end - local.get $5 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add - local.set $5 - 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 $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.const 1 - i32.shl local.get $1 - i32.add - local.get $2 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.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 @@ -25538,47 +24771,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 @@ -25597,13 +24829,11 @@ (local $6 i32) local.get $0 i32.load offset=4 - local.set $3 + local.set $5 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 @@ -25624,10 +24854,10 @@ 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 $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -25639,109 +24869,108 @@ local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $2 - i32.eqz - if - local.get $3 - i32.load - call $~lib/util/number/utoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9580 + local.get $6 + i32.eqz + if + local.get $5 i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - i32.mul - i32.const 10 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + 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 - local.get $2 + 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 $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.lt_s + if + 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.gt_s + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 if - local.get $0 - i32.const 1 - i32.shl local.get $1 - i32.add - local.get $5 - i32.const 2 + i32.const 1 i32.shl - local.get $3 - i32.add - i32.load - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 + i32.const 9584 local.get $4 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.set $0 - end - local.get $5 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add - local.set $5 - 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 $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.const 1 - i32.shl local.get $1 - i32.add - local.get $2 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.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 @@ -25842,7 +25071,6 @@ (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 @@ -25880,7 +25108,6 @@ if local.get $1 i32.wrap_i64 - local.tee $4 local.tee $2 i32.const 100000 i32.lt_u @@ -25927,13 +25154,12 @@ i32.add end end - local.set $2 + local.get $3 + i32.add + local.set $3 local.get $0 - local.get $4 local.get $2 local.get $3 - i32.add - local.tee $0 call $~lib/util/number/utoa32_dec_lut else local.get $0 @@ -25990,10 +25216,10 @@ end local.get $3 i32.add - local.tee $0 + local.tee $3 call $~lib/util/number/utoa64_dec_lut end - local.get $0 + local.get $3 ) (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) (local $1 i32) @@ -26003,33 +25229,31 @@ (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=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 $4 + local.tee $6 i32.const 0 i32.lt_s if @@ -26041,10 +25265,10 @@ local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $4 - i32.eqz - if + local.get $6 + i32.eqz + if + block $__inlined_func$~lib/util/number/itoa64 (result i32) local.get $5 i64.load i64.extend32_s @@ -26056,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 $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 + 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 $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 $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 $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 + else 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 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 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 $4 - 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.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 - local.get $4 - i32.lt_s + 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 $0 - i32.const 1 - i32.shl local.get $1 - i32.add - local.get $3 - i32.const 3 + i32.const 1 i32.shl - local.get $5 - i32.add - i64.load - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 + i32.const 9584 local.get $7 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9584 - 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.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 $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 + 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 @@ -26410,7 +25634,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,43 +25688,41 @@ 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) - (local $2 i64) + (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=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 + (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 $1 + local.get $0 i32.const 1 i32.sub local.tee $3 @@ -26516,13 +25737,13 @@ local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $4 + local.get $3 + i32.eqz + if + block $__inlined_func$~lib/util/number/utoa64 (result i32) + local.get $2 i64.load - local.set $2 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -26530,251 +25751,251 @@ 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/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 8000 - local.set $0 - br $__inlined_func$~lib/util/number/utoa64 - end - local.get $2 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.wrap_i64 - local.tee $3 - local.tee $0 - i32.const 100000 + local.get $7 + 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 $7 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + 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 $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end + i32.const 10 + i32.ge_u + i32.const 1 + i32.add else local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add end - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + else local.get $0 - local.get $3 - 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 $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa64_dec_lut end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + 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 - 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 $3 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 20 - i32.add - i32.mul - i32.const 20 + i32.const 4 i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 + 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 - i32.gt_s if - local.get $0 - i32.const 1 - i32.shl local.get $1 - i32.add - local.get $6 - 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 + i32.const 9584 local.get $6 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $6 i32.add - local.set $6 - br $for-loop|0 + local.set $1 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $7 + 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 - i32.const 1 - i32.shl local.get $1 - 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 - 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 @@ -26797,36 +26018,34 @@ (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 $6 - local.set $3 - local.get $6 + local.tee $3 i32.const 100000 i32.lt_u if (result i32) @@ -26895,107 +26114,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 +26227,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 48 @@ -27019,16 +26238,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 +26259,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 +26270,42 @@ i32.shl local.get $0 i32.add - local.tee $6 + local.tee $0 i32.load16_u - local.set $3 + local.set $9 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 $9 i32.const 1 i32.sub - local.set $3 + local.set $9 local.get $1 local.get $2 i64.add @@ -27096,8 +26313,8 @@ br $while-continue|3 end end - local.get $6 - local.get $3 + local.get $0 + local.get $9 i32.store16 local.get $5 return @@ -27105,7 +26322,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 +26331,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 +26363,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 $9 + 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 $9 + i32.const 1 + i32.sub + local.set $9 + local.get $1 + local.get $13 + i64.add + local.set $1 + br $while-continue|6 + end end + local.get $0 + local.get $9 + 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 +26463,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 +26490,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 +26531,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 +26559,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 +26577,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -27379,24 +26588,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 +26650,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 +26683,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 +26703,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 +26775,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 +26805,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 +26846,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 +26873,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 +26883,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 +26912,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 +26992,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 +27011,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 +27042,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) @@ -27931,13 +27130,11 @@ (local $6 i32) local.get $0 i32.load offset=4 - local.set $3 + local.set $5 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 @@ -27958,10 +27155,10 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinFloatArray - local.get $1 + local.get $0 i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -27973,112 +27170,111 @@ local.set $0 br $__inlined_func$~lib/util/string/joinFloatArray end - block $folding-inner0 - local.get $2 - i32.eqz + 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 + 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.lt_s if + 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 $2 - 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 $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 $2 - local.get $5 - i32.gt_s + call $~lib/util/number/dtoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 if - local.get $0 - i32.const 1 - i32.shl local.get $1 - i32.add - local.get $5 - i32.const 2 + i32.const 1 i32.shl - local.get $3 - i32.add - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa_buffered local.get $0 i32.add - local.set $0 + i32.const 9584 local.get $4 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.set $0 - end - local.get $5 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add - local.set $5 - 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 $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.const 1 - i32.shl local.get $1 - i32.add - local.get $2 - i32.const 2 - i32.shl - local.get $3 - i32.add - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa_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/joinFloatArray end global.get $~lib/memory/__stack_pointer @@ -28097,13 +27293,11 @@ (local $6 i32) local.get $0 i32.load offset=4 - local.set $3 + local.set $5 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 @@ -28124,10 +27318,10 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinFloatArray - local.get $1 + local.get $0 i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -28139,109 +27333,108 @@ local.set $0 br $__inlined_func$~lib/util/string/joinFloatArray end - block $folding-inner0 - local.get $2 - i32.eqz - if - local.get $3 - f64.load - call $~lib/util/number/dtoa - local.set $0 - br $folding-inner0 - end + 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 - local.get $2 - 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.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 - local.get $2 + 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.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.gt_s + 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 - i32.const 1 - i32.shl local.get $1 - i32.add - local.get $5 - i32.const 3 + i32.const 1 i32.shl - local.get $3 - i32.add - f64.load - call $~lib/util/number/dtoa_buffered local.get $0 i32.add - local.set $0 + i32.const 9584 local.get $4 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 - i32.add - local.set $0 - end - local.get $5 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add - local.set $5 - 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 $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.const 1 - i32.shl local.get $1 - i32.add - local.get $2 - i32.const 3 - i32.shl - local.get $3 - i32.add - f64.load - call $~lib/util/number/dtoa_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/joinFloatArray end global.get $~lib/memory/__stack_pointer @@ -28269,7 +27462,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 +27487,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 +27497,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 +27516,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 +27536,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 +27559,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 +27580,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 +27772,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 @@ -28591,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 @@ -28613,7 +27809,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 +27826,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 +27837,7 @@ i32.const -1 i32.xor i64.extend_i32_s - local.get $5 + local.get $4 i32.const 255 local.get $0 i32.sub @@ -28675,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 @@ -28760,27 +27956,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 +28153,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 @@ -28999,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 @@ -29223,25 +28419,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 +28470,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 +28667,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 +28708,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 +28914,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 +29089,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 +29104,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 +29115,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 +29209,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 +29235,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -30044,48 +29246,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 +29303,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 +29329,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 +29343,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 +29375,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 +29403,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 +29422,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -30226,13 +29434,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 +29451,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 +29487,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 +29693,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 +29868,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 +29883,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 +29894,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 +29988,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 +30014,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -30811,48 +30025,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 +30082,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 +30108,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 +30122,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 +30154,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 +30182,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 +30201,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -30993,13 +30213,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 +30230,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 +30276,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 +30504,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 +30638,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 +30661,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store16 local.get $6 i32.const 1 @@ -31453,7 +30673,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store16 local.get $2 i32.const 1 @@ -31478,8 +30698,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 +30713,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 +30724,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 +30818,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 +30844,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -31629,50 +30855,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 +30914,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 +30940,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 +30954,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 +30986,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 +31014,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 +31033,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -31813,13 +31045,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 +31062,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 +31098,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 +31326,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 +31460,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 +31483,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store16 local.get $6 i32.const 1 @@ -32263,7 +31495,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store16 local.get $2 i32.const 1 @@ -32288,8 +31520,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 +31535,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 +31546,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 +31640,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 +31666,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -32439,50 +31677,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 +31736,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 +31762,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 +31776,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 +31808,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 +31836,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 +31855,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -32623,13 +31867,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 +31884,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 +31930,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 +32158,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 +32292,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 +32315,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -33083,7 +32327,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -33108,8 +32352,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 +32367,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 +32378,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 +32472,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 +32498,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -33259,50 +32509,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 +32568,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 +32594,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 +32608,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 +32640,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 +32668,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 +32687,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -33443,13 +32699,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 +32716,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 +32746,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 +32974,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 +33108,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 +33131,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -33887,7 +33143,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -33912,8 +33168,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 +33183,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 +33194,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 +33288,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 +33314,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -34063,50 +33325,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 +33384,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 +33410,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 +33424,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 +33456,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 +33484,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 +33503,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -34247,13 +33515,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 +33532,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 +33558,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 +33600,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 +33609,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 +33628,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 +33644,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 +33706,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 +33717,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 +33759,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 +33802,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 +33988,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 +34008,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 +34019,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 +34038,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 +34061,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 +34089,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 +34098,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -34843,43 +34110,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 +34171,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 +34186,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 +34214,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 +34224,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 +34239,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 +34281,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 +34309,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 +34328,7 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.load local.tee $1 @@ -35059,13 +34340,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 +34357,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 +34383,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 +34425,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 +34434,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 +34453,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 +34469,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 +34531,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 +34542,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 +34584,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 +34627,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 +34813,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 +34833,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 +34844,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 +34863,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 +34886,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 +34914,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 +34923,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -35655,43 +34935,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 +34996,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 +35011,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 +35039,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 +35049,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 +35064,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 +35106,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 +35134,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 +35153,7 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.load local.tee $1 @@ -35871,13 +35165,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 +35182,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 +35208,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 +35250,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 +35259,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 +35278,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 +35294,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 +35356,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 +35367,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 +35409,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 +35452,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 +35638,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 +35659,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 +35670,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 +35689,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 +35712,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 +35740,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 +35749,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -36468,52 +35761,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 +35831,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 +35865,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 +35932,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 +35960,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 +35979,7 @@ local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load local.tee $1 @@ -36684,13 +35991,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 +36008,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) @@ -36754,32 +36061,50 @@ 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 - call $~lib/rt/itcms/__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 - call $~lib/rt/itcms/__visit + 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 @@ -36787,7 +36112,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,7 +36128,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -36814,42 +36138,42 @@ 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 6 call $~lib/typedarray/Int8Array#constructor - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $5 i32.const 3 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $0 + 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 @@ -36858,89 +36182,90 @@ 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 $5 i32.load offset=8 - local.set $5 - local.get $1 + local.set $2 + local.get $3 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 $2 i32.const 0 call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $5 i32.load offset=4 - local.set $9 + 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 $9 + local.get $1 + local.get $7 i32.add i32.load8_s - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $0 + local.get $3 + local.get $1 + local.get $5 i32.const 3952 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $3 + local.get $0 local.get $6 i32.add - local.get $7 + local.get $3 i32.store8 + 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 $1 + local.get $8 local.get $6 - local.get $2 + 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 +36276,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.ne @@ -36963,7 +36288,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 +36301,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 +36314,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,7 +36350,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -37036,42 +36360,42 @@ 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 6 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $5 i32.const 3 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $5 i32.const 5 i32.const 5 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer + 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 @@ -37080,89 +36404,90 @@ 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 $5 i32.load offset=8 - local.set $5 - local.get $1 + local.set $2 + local.get $3 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 $2 i32.const 0 call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $5 i32.load offset=4 - local.set $9 + 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 $9 + local.get $1 + local.get $7 i32.add i32.load8_u - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $0 + local.get $3 + local.get $1 + local.get $5 i32.const 3984 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $3 + local.get $0 local.get $6 i32.add - local.get $7 + local.get $3 i32.store8 + 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 $1 + local.get $8 local.get $6 - local.get $2 + 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 +36498,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.ne @@ -37185,7 +36510,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 +36523,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 +36536,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,7 +36572,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -37258,42 +36582,42 @@ 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 6 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $5 i32.const 3 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $5 i32.const 5 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 4016 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 @@ -37302,89 +36626,90 @@ 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 $5 i32.load offset=8 - local.set $5 - local.get $1 + local.set $2 + local.get $3 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 $2 i32.const 0 call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $5 i32.load offset=4 - local.set $9 + 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 $9 + local.get $1 + local.get $7 i32.add i32.load8_u - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $0 + 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 $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $3 + local.get $0 local.get $6 i32.add - local.get $7 + local.get $3 i32.store8 + 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 $1 + local.get $8 local.get $6 - local.get $2 + 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 +36720,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.ne @@ -37407,7 +36732,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 +36745,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 +36758,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,7 +36794,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -37480,42 +36804,42 @@ 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 6 call $~lib/typedarray/Int16Array#constructor - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $5 i32.const 3 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $5 i32.const 5 i32.const 5 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 4048 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 @@ -37524,100 +36848,101 @@ 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 $5 i32.load offset=8 i32.const 1 i32.shr_u - local.set $5 - local.get $1 + local.set $2 + local.get $3 i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $1 + 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 $0 + local.get $5 i32.load offset=4 - local.set $9 + 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 $9 + local.get $7 i32.add i32.load16_s - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $0 + 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 $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $3 + local.get $0 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 $1 + local.get $8 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 $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 @@ -37628,7 +36953,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 1 i32.shr_u @@ -37642,7 +36967,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 3 @@ -37655,7 +36980,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 4 @@ -37668,7 +36993,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 5 @@ -37704,7 +37029,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -37715,42 +37039,42 @@ 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 6 call $~lib/typedarray/Uint16Array#constructor - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $5 i32.const 3 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $5 i32.const 5 i32.const 5 call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 4080 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 @@ -37759,100 +37083,101 @@ 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 $5 i32.load offset=8 i32.const 1 i32.shr_u - local.set $5 - local.get $1 + local.set $2 + local.get $3 i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $1 + 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 $0 + local.get $5 i32.load offset=4 - local.set $9 + 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 $9 + local.get $7 i32.add i32.load16_u - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $0 + 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 $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $3 + local.get $0 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 $1 + local.get $8 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 $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 @@ -37863,7 +37188,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 1 i32.shr_u @@ -37877,7 +37202,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 3 @@ -37890,7 +37215,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 4 @@ -37903,7 +37228,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 5 @@ -37939,7 +37264,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -37950,42 +37274,42 @@ 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 6 call $~lib/typedarray/Int32Array#constructor - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $5 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $5 i32.const 5 i32.const 5 call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 4112 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 @@ -37994,100 +37318,101 @@ 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 $5 i32.load offset=8 i32.const 2 i32.shr_u - local.set $5 - local.get $1 + local.set $2 + local.get $3 i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + 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 $0 + local.get $5 i32.load offset=4 - local.set $9 + 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 $9 + 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 $0 + 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 $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $3 + local.get $0 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 $1 + local.get $8 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 $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 @@ -38098,7 +37423,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 2 i32.shr_u @@ -38112,7 +37437,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -38125,7 +37450,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 4 @@ -38138,7 +37463,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 5 @@ -38174,7 +37499,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -38185,42 +37509,42 @@ 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 6 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $5 i32.const 3 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $5 i32.const 5 i32.const 5 call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 4144 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 @@ -38229,100 +37553,101 @@ 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 $5 i32.load offset=8 i32.const 2 i32.shr_u - local.set $5 - local.get $1 + local.set $2 + local.get $3 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $1 + 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 $0 + local.get $5 i32.load offset=4 - local.set $9 + 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 $9 + 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 $0 + local.get $3 + local.get $1 + local.get $5 i32.const 4144 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $3 + local.get $0 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 $1 + local.get $8 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 $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 @@ -38333,7 +37658,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 2 i32.shr_u @@ -38347,7 +37672,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 3 @@ -38360,7 +37685,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 4 @@ -38373,7 +37698,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 5 @@ -38403,13 +37728,12 @@ (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) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -38420,42 +37744,42 @@ 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 6 call $~lib/typedarray/Int64Array#constructor - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $5 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $5 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $5 i32.const 3 i64.const 4 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $5 i32.const 5 i64.const 5 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 4176 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 @@ -38464,100 +37788,101 @@ 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 $0 + local.get $5 i32.load offset=8 i32.const 3 i32.shr_u - local.set $5 - local.get $1 + local.set $2 + local.get $6 i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $1 + 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 $0 + local.get $5 i32.load offset=4 - local.set $9 + 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 $9 + 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 $0 + 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 $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $3 + local.get $0 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 $1 + local.get $8 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 $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 @@ -38568,7 +37893,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.shr_u @@ -38582,7 +37907,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 3 @@ -38595,7 +37920,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 4 @@ -38608,7 +37933,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 5 @@ -38638,13 +37963,12 @@ (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) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -38655,42 +37979,42 @@ 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 6 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $5 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $5 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $5 i32.const 3 i64.const 4 call $~lib/typedarray/Uint64Array#__set - local.get $0 + 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 - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -38699,100 +38023,101 @@ 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 $0 + local.get $5 i32.load offset=8 i32.const 3 i32.shr_u - local.set $5 - local.get $1 + local.set $2 + local.get $6 i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $1 + 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 $0 + local.get $5 i32.load offset=4 - local.set $9 + 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 $9 + 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 $0 + 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 $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $3 + local.get $0 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 $1 + local.get $8 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 $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 @@ -38803,7 +38128,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.shr_u @@ -38817,7 +38142,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 3 @@ -38830,7 +38155,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 4 @@ -38843,7 +38168,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 5 @@ -38873,13 +38198,12 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) + (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -38890,42 +38214,42 @@ 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 6 call $~lib/typedarray/Float32Array#constructor - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $5 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $5 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $5 i32.const 3 f32.const 4 call $~lib/typedarray/Float32Array#__set - local.get $0 + 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 @@ -38934,100 +38258,101 @@ 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 $0 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u - local.set $5 - local.get $1 + local.set $2 + local.get $6 i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $1 + 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 $0 + local.get $5 i32.load offset=4 - local.set $9 + 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 $9 + 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 $0 + 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 $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $3 + local.get $0 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 $1 + local.get $8 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 $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 @@ -39038,7 +38363,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 2 i32.shr_u @@ -39052,7 +38377,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 3 @@ -39065,7 +38390,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 @@ -39078,7 +38403,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 5 @@ -39108,13 +38433,12 @@ (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) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -39125,42 +38449,42 @@ 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 6 call $~lib/typedarray/Float64Array#constructor - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $5 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $5 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $5 i32.const 3 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $0 + 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 @@ -39169,100 +38493,101 @@ 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 $0 + local.get $5 i32.load offset=8 i32.const 3 i32.shr_u - local.set $5 - local.get $1 + local.set $2 + local.get $6 i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $1 + 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 $0 + local.get $5 i32.load offset=4 - local.set $9 + 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 $9 + 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 $0 + 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 $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $3 + local.get $0 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 $1 + local.get $8 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 $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 @@ -39273,7 +38598,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.shr_u @@ -39287,7 +38612,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 3 @@ -39300,7 +38625,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 4 @@ -39313,7 +38638,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 5 @@ -39758,16 +39083,17 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (local $0 i32) (local $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -39784,47 +39110,49 @@ 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 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 7616 i32.store - local.get $1 + local.get $3 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 + local.tee $4 + call $~lib/typedarray/Int64Array#constructor + local.tee $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int32Array#constructor - local.tee $5 + local.get $4 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 i32.store offset=8 loop $for-loop|0 local.get $0 - local.get $2 + local.get $4 i32.lt_s if - local.get $1 + local.get $5 local.get $0 i32.const 7616 local.get $0 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $5 + 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 - call $~lib/typedarray/Int32Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set local.get $0 i32.const 1 i32.add @@ -39834,52 +39162,52 @@ end i32.const 0 local.set $0 - local.get $1 + local.get $5 i32.load offset=4 - local.set $3 - local.get $1 + local.set $7 + local.get $5 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.tee $4 + local.tee $8 i32.const 1 i32.gt_u if - local.get $4 + local.get $8 i32.const 1 i32.shr_u - local.set $6 - local.get $4 + local.set $3 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 loop $while-continue|0 local.get $0 - local.get $6 + local.get $3 i32.lt_u if local.get $0 - i32.const 2 + i32.const 3 i32.shl - local.get $3 - i32.add - local.tee $7 - i32.load - local.set $8 local.get $7 - local.get $4 + i32.add + local.tee $9 + i64.load + local.set $2 + local.get $9 + local.get $8 local.get $0 i32.sub - i32.const 2 + i32.const 3 i32.shl - local.get $3 - i32.add - local.tee $7 - i32.load - i32.store local.get $7 - local.get $8 - i32.store + 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 @@ -39892,20 +39220,21 @@ local.set $0 loop $for-loop|1 local.get $0 - local.get $2 + local.get $4 i32.lt_s if - local.get $1 + local.get $5 local.get $0 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Int64Array#__get i32.const 7616 - local.get $2 + local.get $4 i32.const 1 i32.sub local.get $0 i32.sub call $~lib/array/Array#__get - i32.ne + i64.extend_i32_s + i64.ne if i32.const 0 i32.const 1568 @@ -39922,77 +39251,74 @@ end end global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 4 + local.get $6 i32.const 8 - call $~lib/typedarray/Int32Array#subarray - local.set $1 + call $~lib/typedarray/Int64Array#subarray + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 + local.get $3 i32.load offset=4 - local.set $5 - local.get $1 + local.set $4 + local.get $3 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.tee $3 + local.tee $5 i32.const 1 i32.gt_u if - local.get $3 + local.get $5 i32.const 1 i32.shr_u - local.set $4 - local.get $3 + local.set $6 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 loop $while-continue|01 - local.get $2 - local.get $4 + local.get $1 + local.get $6 i32.lt_u if - local.get $2 - i32.const 2 + local.get $1 + i32.const 3 i32.shl - local.get $5 + local.get $4 i32.add - local.tee $6 - i32.load - local.set $7 - local.get $6 - local.get $3 - local.get $2 + local.tee $7 + i64.load + local.set $2 + local.get $7 + local.get $5 + local.get $1 i32.sub - i32.const 2 + i32.const 3 i32.shl - local.get $5 + local.get $4 i32.add - local.tee $6 - i32.load - i32.store - local.get $6 + local.tee $7 + i64.load + i64.store local.get $7 - i32.store local.get $2 + i64.store + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $while-continue|01 end end end - local.get $1 + local.get $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 8 - i32.ne + call $~lib/typedarray/Int64Array#__get + i64.const 8 + i64.ne if i32.const 0 i32.const 1568 @@ -40001,11 +39327,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 7 - i32.ne + call $~lib/typedarray/Int64Array#__get + i64.const 7 + i64.ne if i32.const 0 i32.const 1568 @@ -40014,11 +39340,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 6 - i32.ne + call $~lib/typedarray/Int64Array#__get + i64.const 6 + i64.ne if i32.const 0 i32.const 1568 @@ -40027,11 +39353,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 3 - call $~lib/typedarray/Int32Array#__get - i32.const 5 - i32.ne + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.ne if i32.const 0 i32.const 1568 @@ -40045,16 +39371,17 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (local $0 i32) (local $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -40071,47 +39398,49 @@ 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 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 7616 i32.store - local.get $1 + local.get $3 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 + local.tee $4 + call $~lib/typedarray/Uint64Array#constructor + local.tee $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint32Array#constructor - local.tee $5 + local.get $4 + call $~lib/typedarray/Uint64Array#constructor + local.tee $6 i32.store offset=8 loop $for-loop|0 local.get $0 - local.get $2 + local.get $4 i32.lt_s if - local.get $1 + local.get $5 local.get $0 i32.const 7616 local.get $0 call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $5 + 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 - call $~lib/typedarray/Uint32Array#__set + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set local.get $0 i32.const 1 i32.add @@ -40121,52 +39450,52 @@ end i32.const 0 local.set $0 - local.get $1 + local.get $5 i32.load offset=4 - local.set $3 - local.get $1 + local.set $7 + local.get $5 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.tee $4 + local.tee $8 i32.const 1 i32.gt_u if - local.get $4 + local.get $8 i32.const 1 i32.shr_u - local.set $6 - local.get $4 + local.set $3 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 loop $while-continue|0 local.get $0 - local.get $6 + local.get $3 i32.lt_u if local.get $0 - i32.const 2 + i32.const 3 i32.shl - local.get $3 - i32.add - local.tee $7 - i32.load - local.set $8 local.get $7 - local.get $4 + i32.add + local.tee $9 + i64.load + local.set $2 + local.get $9 + local.get $8 local.get $0 i32.sub - i32.const 2 + i32.const 3 i32.shl - local.get $3 - i32.add - local.tee $7 - i32.load - i32.store local.get $7 - local.get $8 - i32.store + 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 @@ -40179,20 +39508,21 @@ local.set $0 loop $for-loop|1 local.get $0 - local.get $2 + local.get $4 i32.lt_s if - local.get $1 + local.get $5 local.get $0 - call $~lib/typedarray/Uint32Array#__get + call $~lib/typedarray/Uint64Array#__get i32.const 7616 - local.get $2 + local.get $4 i32.const 1 i32.sub local.get $0 i32.sub call $~lib/array/Array#__get - i32.ne + i64.extend_i32_s + i64.ne if i32.const 0 i32.const 1568 @@ -40209,76 +39539,74 @@ end end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.const 8 - call $~lib/typedarray/Uint32Array#subarray - local.set $1 + call $~lib/typedarray/Uint64Array#subarray + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 + local.get $3 i32.load offset=4 - local.set $5 - local.get $1 + local.set $4 + local.get $3 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.tee $3 + local.tee $5 i32.const 1 i32.gt_u if - local.get $3 + local.get $5 i32.const 1 i32.shr_u - local.set $4 - local.get $3 + local.set $6 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 loop $while-continue|01 - local.get $2 - local.get $4 + local.get $1 + local.get $6 i32.lt_u if - local.get $2 - i32.const 2 + local.get $1 + i32.const 3 i32.shl - local.get $5 + local.get $4 i32.add - local.tee $6 - i32.load - local.set $7 - local.get $6 - local.get $3 - local.get $2 + local.tee $7 + i64.load + local.set $2 + local.get $7 + local.get $5 + local.get $1 i32.sub - i32.const 2 + i32.const 3 i32.shl - local.get $5 + local.get $4 i32.add - local.tee $6 - i32.load - i32.store - local.get $6 + local.tee $7 + i64.load + i64.store local.get $7 - i32.store local.get $2 + i64.store + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $while-continue|01 end end end - local.get $1 + local.get $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 8 - i32.ne + call $~lib/typedarray/Uint64Array#__get + i64.const 8 + i64.ne if i32.const 0 i32.const 1568 @@ -40287,11 +39615,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 7 - i32.ne + call $~lib/typedarray/Uint64Array#__get + i64.const 7 + i64.ne if i32.const 0 i32.const 1568 @@ -40300,11 +39628,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 6 - i32.ne + call $~lib/typedarray/Uint64Array#__get + i64.const 6 + i64.ne if i32.const 0 i32.const 1568 @@ -40313,11 +39641,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 3 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.ne + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.ne if i32.const 0 i32.const 1568 @@ -40331,16 +39659,17 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (local $0 i32) (local $1 i32) - (local $2 i32) + (local $2 f32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -40357,49 +39686,49 @@ 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 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 7616 i32.store - local.get $1 + local.get $3 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $4 + call $~lib/typedarray/Float32Array#constructor + local.tee $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 + local.get $4 + call $~lib/typedarray/Float32Array#constructor + local.tee $6 i32.store offset=8 loop $for-loop|0 local.get $0 - local.get $2 + local.get $4 i32.lt_s if - local.get $1 + 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 $5 + 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 - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set local.get $0 i32.const 1 i32.add @@ -40409,52 +39738,52 @@ end i32.const 0 local.set $0 - local.get $1 + local.get $5 i32.load offset=4 - local.set $3 - local.get $1 + local.set $7 + local.get $5 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - local.tee $4 + local.tee $8 i32.const 1 i32.gt_u if - local.get $4 + local.get $8 i32.const 1 i32.shr_u - local.set $6 - local.get $4 + local.set $3 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 loop $while-continue|0 local.get $0 - local.get $6 + local.get $3 i32.lt_u if local.get $0 - i32.const 3 + i32.const 2 i32.shl - local.get $3 - i32.add - local.tee $7 - i64.load - local.set $8 local.get $7 - local.get $4 + i32.add + local.tee $9 + f32.load + local.set $2 + local.get $9 + local.get $8 local.get $0 i32.sub - i32.const 3 + i32.const 2 i32.shl - local.get $3 - i32.add - local.tee $7 - i64.load - i64.store local.get $7 - local.get $8 - i64.store + 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 @@ -40467,21 +39796,21 @@ local.set $0 loop $for-loop|1 local.get $0 - local.get $2 + local.get $4 i32.lt_s if - local.get $1 + local.get $5 local.get $0 - call $~lib/typedarray/Int64Array#__get + call $~lib/typedarray/Float32Array#__get i32.const 7616 - local.get $2 + local.get $4 i32.const 1 i32.sub local.get $0 i32.sub call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne + f32.convert_i32_s + f32.ne if i32.const 0 i32.const 1568 @@ -40498,76 +39827,74 @@ end end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.const 8 - call $~lib/typedarray/Int64Array#subarray - local.set $1 + call $~lib/typedarray/Float32Array#subarray + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 + local.get $3 i32.load offset=4 - local.set $5 - local.get $1 + local.set $4 + local.get $3 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - local.tee $3 + local.tee $5 i32.const 1 i32.gt_u if - local.get $3 + local.get $5 i32.const 1 i32.shr_u - local.set $4 - local.get $3 + local.set $6 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 loop $while-continue|01 - local.get $2 - local.get $4 + local.get $1 + local.get $6 i32.lt_u if - local.get $2 - i32.const 3 + local.get $1 + i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add - local.tee $6 - i64.load - local.set $8 - local.get $6 - local.get $3 - local.get $2 + local.tee $7 + f32.load + local.set $2 + local.get $7 + local.get $5 + local.get $1 i32.sub - i32.const 3 + i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add - local.tee $6 - i64.load - i64.store - local.get $6 - local.get $8 - i64.store + 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 $2 + local.set $1 br $while-continue|01 end end end - local.get $1 + local.get $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 8 - i64.ne + call $~lib/typedarray/Float32Array#__get + f32.const 8 + f32.ne if i32.const 0 i32.const 1568 @@ -40576,11 +39903,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 7 - i64.ne + call $~lib/typedarray/Float32Array#__get + f32.const 7 + f32.ne if i32.const 0 i32.const 1568 @@ -40589,11 +39916,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 6 - i64.ne + call $~lib/typedarray/Float32Array#__get + f32.const 6 + f32.ne if i32.const 0 i32.const 1568 @@ -40602,11 +39929,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 3 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne if i32.const 0 i32.const 1568 @@ -40620,16 +39947,17 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (local $0 i32) (local $1 i32) - (local $2 i32) + (local $2 f64) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -40646,49 +39974,49 @@ 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 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 7616 i32.store - local.get $1 + local.get $3 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 + local.tee $4 + call $~lib/typedarray/Float64Array#constructor + local.tee $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint64Array#constructor - local.tee $5 + local.get $4 + call $~lib/typedarray/Float64Array#constructor + local.tee $6 i32.store offset=8 loop $for-loop|0 local.get $0 - local.get $2 + local.get $4 i32.lt_s if - local.get $1 + 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 $5 + 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 - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set local.get $0 i32.const 1 i32.add @@ -40698,52 +40026,52 @@ end i32.const 0 local.set $0 - local.get $1 + local.get $5 i32.load offset=4 - local.set $3 - local.get $1 + local.set $7 + local.get $5 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $8 i32.const 1 i32.gt_u if - local.get $4 + local.get $8 i32.const 1 i32.shr_u - local.set $6 - local.get $4 + local.set $3 + local.get $8 i32.const 1 i32.sub - local.set $4 + local.set $8 loop $while-continue|0 local.get $0 - local.get $6 + local.get $3 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 + 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 $3 - i32.add - local.tee $7 - i64.load - i64.store local.get $7 - local.get $8 - i64.store + 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 @@ -40756,21 +40084,21 @@ local.set $0 loop $for-loop|1 local.get $0 - local.get $2 + local.get $4 i32.lt_s if - local.get $1 + local.get $5 local.get $0 - call $~lib/typedarray/Uint64Array#__get + call $~lib/typedarray/Float64Array#__get i32.const 7616 - local.get $2 + local.get $4 i32.const 1 i32.sub local.get $0 i32.sub call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne + f64.convert_i32_s + f64.ne if i32.const 0 i32.const 1568 @@ -40787,76 +40115,75 @@ end end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 + i32.const 4 i32.const 8 - call $~lib/typedarray/Uint64Array#subarray - local.set $1 + call $~lib/typedarray/Float64Array#subarray + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 + local.get $3 i32.load offset=4 - local.set $5 - local.get $1 + local.set $4 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $5 i32.const 1 i32.gt_u if - local.get $3 + local.get $5 i32.const 1 i32.shr_u - local.set $4 - local.get $3 + local.set $6 + local.get $5 i32.const 1 i32.sub - local.set $3 + local.set $5 loop $while-continue|01 - local.get $2 - local.get $4 + local.get $1 + local.get $6 i32.lt_u if - local.get $2 + local.get $1 i32.const 3 i32.shl - local.get $5 + local.get $4 i32.add - local.tee $6 - i64.load - local.set $8 - local.get $6 - local.get $3 - local.get $2 + 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 $5 + local.get $4 i32.add - local.tee $6 - i64.load - i64.store - local.get $6 - local.get $8 - i64.store + 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 $2 + local.set $1 br $while-continue|01 end end end - local.get $1 + local.get $3 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 8 - i64.ne + call $~lib/typedarray/Float64Array#__get + f64.const 8 + f64.ne if i32.const 0 i32.const 1568 @@ -40865,11 +40192,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 7 - i64.ne + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.ne if i32.const 0 i32.const 1568 @@ -40878,11 +40205,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 6 - i64.ne + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.ne if i32.const 0 i32.const 1568 @@ -40891,11 +40218,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 3 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.ne if i32.const 0 i32.const 1568 @@ -40909,18 +40236,10 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - (local $0 i32) + (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -40936,584 +40255,13 @@ 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 - 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 - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 9584 - i32.store - local.get $0 - call $~lib/typedarray/Uint8Array#join + i32.const 9584 + i32.store + local.get $0 + call $~lib/typedarray/Uint8Array#join global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -41613,12 +40361,13 @@ (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 @@ -41635,145 +40384,145 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $6 i32.store - local.get $1 + local.get $6 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $6 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $1 + 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 + local.tee $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $1 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $2 + 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 $5 + local.tee $2 i32.store offset=8 - local.get $5 + local.get $2 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $2 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $2 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Int8Array#constructor - local.tee $0 + local.tee $8 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 i32.store offset=16 - local.get $0 + 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 $4 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.store offset=16 - local.get $0 - local.get $4 + 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-inner0 - local.get $0 + 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 $0 + 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 $4 + local.set $10 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $0 + local.get $10 i32.lt_s if - local.get $3 - local.get $6 + local.get $0 + local.get $7 i32.add - local.get $3 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $9 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 $0 i32.const 1 i32.add - local.set $3 + local.set $0 br $for-loop|0 end end @@ -41782,83 +40531,81 @@ i32.const 15 i32.const 11392 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/Int8Array> - local.get $0 - local.get $1 + 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 $8 local.get $0 - 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 $8 i32.load offset=8 i32.const 11196 i32.load i32.const 2 i32.add i32.lt_s - br_if $folding-inner0 - local.get $0 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 2 i32.add - local.set $4 + 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 $1 + loop $for-loop|05 + local.get $3 local.get $7 i32.lt_s if - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.add - local.get $1 + local.get $3 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 $3 i32.const 1 i32.add - local.set $1 - br $for-loop|04 + local.set $3 + br $for-loop|05 end end i32.const 10 @@ -41866,35 +40613,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 $8 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $0 - local.get $2 + local.get $8 + local.get $1 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + 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 $0 + local.get $8 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 $8 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -42003,12 +40750,13 @@ (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 @@ -42025,145 +40773,145 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $6 i32.store - local.get $1 + local.get $6 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $6 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $1 + 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 + local.tee $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $1 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $2 + 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 $5 + local.tee $2 i32.store offset=8 - local.get $5 + local.get $2 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $2 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $2 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + local.tee $8 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 i32.store offset=16 - local.get $0 + 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 $4 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.store offset=16 - local.get $0 - local.get $4 + 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-inner0 - local.get $0 + 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 $0 + 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 $4 + local.set $10 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $0 + local.get $10 i32.lt_s if - local.get $3 - local.get $6 + local.get $0 + local.get $7 i32.add - local.get $3 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $9 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 $0 i32.const 1 i32.add - local.set $3 + local.set $0 br $for-loop|0 end end @@ -42172,83 +40920,81 @@ i32.const 63 i32.const 11600 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/Uint8Array> - local.get $0 - local.get $1 + 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 $8 local.get $0 - 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 $8 i32.load offset=8 i32.const 11196 i32.load i32.const 2 i32.add i32.lt_s - br_if $folding-inner0 - local.get $0 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 2 i32.add - local.set $4 + 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 $1 + loop $for-loop|05 + local.get $3 local.get $7 i32.lt_s if - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.add - local.get $1 + local.get $3 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 $3 i32.const 1 i32.add - local.set $1 - br $for-loop|04 + local.set $3 + br $for-loop|05 end end i32.const 10 @@ -42256,35 +41002,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 $8 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $0 - local.get $2 + local.get $8 + local.get $1 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + 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 $0 + local.get $8 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 $8 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -42393,13 +41139,16 @@ (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 i32) - (local $9 f32) - (local $10 f64) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -42416,74 +41165,74 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $6 i64.const 0 i64.store - local.get $1 + local.get $6 i64.const 0 i64.store offset=8 - local.get $1 + local.get $6 i32.const 0 i32.store offset=16 - local.get $1 + local.get $6 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $6 i32.store - local.get $3 + local.get $6 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $6 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $3 + 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 + local.tee $7 i32.store offset=4 - local.get $2 + local.get $7 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $7 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $7 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $2 + 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 + local.tee $8 i32.store offset=8 - local.get $4 + local.get $8 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $8 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $8 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 + local.tee $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 @@ -42491,41 +41240,41 @@ block $folding-inner0 i32.const 11020 i32.load - local.get $1 + local.get $11 i32.load offset=8 i32.gt_s br_if $folding-inner0 - local.get $1 + local.get $11 i32.load offset=4 - local.set $6 + local.set $12 i32.const 11012 i32.load - local.set $7 + local.set $13 i32.const 11020 i32.load - local.set $8 + local.set $9 loop $for-loop|0 local.get $0 - local.get $8 + local.get $9 i32.lt_s if local.get $0 - local.get $6 + local.get $12 i32.add i32.const 255 local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $13 i32.add i32.load - local.tee $5 + local.tee $10 i32.sub i32.const 31 i32.shr_s - local.get $5 + local.get $10 i32.or - local.get $5 + local.get $10 i32.const 31 i32.shr_s i32.const -1 @@ -42548,15 +41297,13 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - 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 $0 - local.get $1 + local.get $11 i32.load offset=8 i32.const 11100 i32.load @@ -42564,40 +41311,40 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $1 + local.get $11 i32.load offset=4 i32.const 3 i32.add - local.set $6 + local.set $0 i32.const 11092 i32.load - local.set $7 + local.set $9 i32.const 11100 i32.load - local.set $8 - loop $for-loop|04 - local.get $0 - local.get $8 + local.set $10 + loop $for-loop|05 + local.get $1 + local.get $10 i32.lt_s if local.get $0 - local.get $6 + local.get $1 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 $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) f32.const 0 f32.const 255 - local.get $9 + local.get $4 f32.min f32.max i32.trunc_f32_u @@ -42605,11 +41352,11 @@ i32.const 0 end i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|04 + local.set $1 + br $for-loop|05 end end i32.const 10 @@ -42621,11 +41368,11 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $1 + local.get $11 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $1 - local.get $3 + local.get $11 + local.get $6 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> i32.const 10 @@ -42637,15 +41384,13 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - 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 - i32.const 0 - local.set $0 - local.get $1 + local.get $11 i32.load offset=8 i32.const 11196 i32.load @@ -42653,40 +41398,40 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $1 + local.get $11 i32.load offset=4 i32.const 2 i32.add - local.set $5 + local.set $0 i32.const 11188 i32.load - local.set $6 + local.set $1 i32.const 11196 i32.load - local.set $7 - loop $for-loop|08 - local.get $0 - local.get $7 + local.set $6 + loop $for-loop|011 + local.get $2 + local.get $6 i32.lt_s if local.get $0 - local.get $5 + local.get $2 i32.add - local.get $0 + local.get $2 i32.const 3 i32.shl - local.get $6 + local.get $1 i32.add f64.load - local.tee $10 - local.get $10 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) f64.const 0 f64.const 255 - local.get $10 + local.get $5 f64.min f64.max i32.trunc_f64_u @@ -42694,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 @@ -42710,22 +41455,20 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $1 + local.get $11 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $1 - local.get $2 + local.get $11 + local.get $7 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $1 - local.get $4 + local.get $11 + local.get $8 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 $1 + local.get $11 i32.load offset=8 i32.const 11276 i32.load @@ -42733,48 +41476,48 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $1 + local.get $11 i32.load offset=4 i32.const 7 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 $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 $3 i32.add i32.const 255 - local.get $0 - local.get $4 + local.get $1 + local.get $3 i32.add i32.load8_s - local.tee $2 + local.tee $6 i32.sub i32.const 31 i32.shr_s - local.get $2 + local.get $6 i32.or - local.get $2 + local.get $6 i32.const 31 i32.shr_s i32.const -1 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 @@ -42786,7 +41529,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $1 + local.get $11 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer @@ -42829,7 +41572,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 +41586,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 $5 local.get $1 i32.load offset=4 - local.get $3 i32.add i32.load16_s - local.tee $3 + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer @@ -42870,9 +41613,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,12 +41644,13 @@ (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 @@ -42923,149 +41667,149 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $6 i32.store - local.get $1 + local.get $6 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $6 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $1 + 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 + local.tee $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $1 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $2 + 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 $5 + local.tee $2 i32.store offset=8 - local.get $5 + local.get $2 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $2 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $2 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Int16Array#constructor - local.tee $0 + local.tee $8 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 i32.store offset=16 - local.get $0 + 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 $4 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.store offset=16 - local.get $0 - local.get $4 + 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-inner0 + block $folding-inner1 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $8 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s - br_if $folding-inner0 - local.get $0 + 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 $4 + local.set $10 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $0 + local.get $10 i32.lt_s if - local.get $3 + local.get $0 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add - local.get $3 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $9 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 $0 i32.const 1 i32.add - local.set $3 + local.set $0 br $for-loop|0 end end @@ -43074,87 +41818,85 @@ i32.const 64 i32.const 12048 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/Int16Array> - local.get $0 - local.get $1 + 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 $8 local.get $0 - 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 $8 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s - br_if $folding-inner0 - local.get $0 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 4 i32.add - local.set $4 + 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 $1 + loop $for-loop|05 + local.get $3 local.get $7 i32.lt_s if - local.get $1 + local.get $3 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add - local.get $1 + local.get $3 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 $3 i32.const 1 i32.add - local.set $1 - br $for-loop|04 + local.set $3 + br $for-loop|05 end end i32.const 10 @@ -43162,35 +41904,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 $8 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $0 - local.get $2 + local.get $8 + local.get $1 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + 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 $0 + local.get $8 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 $8 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -43232,7 +41974,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 +41988,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 $5 local.get $1 i32.load offset=4 - local.get $3 i32.add i32.load16_u - local.tee $3 + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer @@ -43273,9 +42015,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,12 +42046,13 @@ (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 @@ -43326,149 +42069,149 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $6 i32.store - local.get $1 + local.get $6 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $6 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $1 + 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 + local.tee $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $1 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $2 + 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 $5 + local.tee $2 i32.store offset=8 - local.get $5 + local.get $2 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $2 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $2 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Uint16Array#constructor - local.tee $0 + local.tee $8 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 i32.store offset=16 - local.get $0 + 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 $4 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.store offset=16 - local.get $0 - local.get $4 + 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-inner0 + block $folding-inner1 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $8 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s - br_if $folding-inner0 - local.get $0 + 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 $4 + local.set $10 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $0 + local.get $10 i32.lt_s if - local.get $3 + local.get $0 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add - local.get $3 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $9 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 $0 i32.const 1 i32.add - local.set $3 + local.set $0 br $for-loop|0 end end @@ -43477,87 +42220,85 @@ i32.const 65 i32.const 12336 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/Uint16Array> - local.get $0 - local.get $1 + 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 $8 local.get $0 - 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 $8 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s - br_if $folding-inner0 - local.get $0 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 4 i32.add - local.set $4 + 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 $1 + loop $for-loop|05 + local.get $3 local.get $7 i32.lt_s if - local.get $1 + local.get $3 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add - local.get $1 + local.get $3 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 $3 i32.const 1 i32.add - local.set $1 - br $for-loop|04 + local.set $3 + br $for-loop|05 end end i32.const 10 @@ -43565,35 +42306,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 $8 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $0 - local.get $2 + local.get $8 + local.get $1 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + 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 $0 + local.get $8 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 $8 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -43635,7 +42376,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 +42390,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 $5 local.get $1 i32.load offset=4 - local.get $3 i32.add i32.load - local.tee $3 + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer @@ -43676,9 +42417,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 @@ -43706,14 +42447,15 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) + (local $3 f32) + (local $4 f64) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 f64) + (local $8 i32) + (local $9 i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -43730,79 +42472,79 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $6 i32.store - local.get $1 + local.get $6 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $6 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $1 + 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 + local.tee $8 i32.store offset=4 - local.get $2 + local.get $8 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $8 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $8 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $2 + 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 $5 + local.tee $1 i32.store offset=8 - local.get $5 + local.get $1 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $1 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $5 + 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 $0 + local.tee $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 i32.store offset=16 - local.get $0 + local.get $9 i32.const 11008 i32.const 0 call $~lib/typedarray/Int32Array#set<~lib/array/Array> @@ -43811,70 +42553,70 @@ i32.const 16 i32.const 12528 call $~lib/rt/__newArray - local.set $3 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $5 i32.store offset=16 - local.get $0 - local.get $3 + 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-inner0 + block $folding-inner1 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 + br_if $folding-inner1 + 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 $0 + local.get $11 i32.lt_s if - local.get $7 - local.get $4 + local.get $10 + local.get $0 i32.const 2 i32.shl - local.tee $3 + local.tee $5 i32.add f32.load - local.set $8 - local.get $3 - local.get $6 + local.set $3 + local.get $5 + local.get $7 i32.add - local.get $8 - local.get $8 + local.get $3 + local.get $3 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $3 i32.trunc_f32_s else i32.const 0 end i32.store - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|0 end end @@ -43883,87 +42625,85 @@ i32.const 16 i32.const 12640 call $~lib/rt/__newArray - local.set $4 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $4 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $0 - local.get $1 + local.get $9 + local.get $6 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 2 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 $0 - 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 + br_if $folding-inner1 + local.get $9 i32.load offset=4 i32.const 8 i32.add - local.set $3 + 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 $1 - local.get $7 + local.set $6 + loop $for-loop|05 + local.get $2 + local.get $6 i32.lt_s if - local.get $1 + local.get $2 i32.const 2 i32.shl - local.get $3 + local.get $0 i32.add - local.get $1 + local.get $2 i32.const 3 i32.shl - local.get $6 + local.get $5 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $4 + local.get $4 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $4 i32.trunc_f64_s else i32.const 0 end i32.store - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 - br $for-loop|04 + local.set $2 + br $for-loop|05 end end i32.const 10 @@ -43971,35 +42711,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 $2 + local.get $9 + local.get $8 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $1 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 +42781,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 +42795,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 $5 local.get $1 i32.load offset=4 - local.get $3 i32.add i32.load - local.tee $3 + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer @@ -44082,9 +42822,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 @@ -44112,14 +42852,15 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) + (local $3 f32) + (local $4 f64) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 f64) + (local $8 i32) + (local $9 i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -44136,79 +42877,79 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $6 i32.store - local.get $1 + local.get $6 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $6 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $1 + 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 + local.tee $8 i32.store offset=4 - local.get $2 + local.get $8 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $8 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $8 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $2 + 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 $5 + local.tee $1 i32.store offset=8 - local.get $5 + local.get $1 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $1 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $5 + 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 $0 + local.tee $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 i32.store offset=16 - local.get $0 + local.get $9 i32.const 11008 i32.const 0 call $~lib/typedarray/Int32Array#set<~lib/array/Array> @@ -44217,70 +42958,70 @@ i32.const 66 i32.const 12896 call $~lib/rt/__newArray - local.set $3 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $5 i32.store offset=16 - local.get $0 - local.get $3 + 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-inner0 + block $folding-inner1 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 + br_if $folding-inner1 + 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 $0 + local.get $11 i32.lt_s if - local.get $7 - local.get $4 + local.get $10 + local.get $0 i32.const 2 i32.shl - local.tee $3 + local.tee $5 i32.add f32.load - local.set $8 - local.get $3 - local.get $6 + local.set $3 + local.get $5 + local.get $7 i32.add - local.get $8 - local.get $8 + local.get $3 + local.get $3 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $3 i32.trunc_f32_u else i32.const 0 end i32.store - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|0 end end @@ -44289,87 +43030,85 @@ i32.const 66 i32.const 13008 call $~lib/rt/__newArray - local.set $4 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $4 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $0 - local.get $1 + local.get $9 + local.get $6 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 2 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 $0 - 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 + br_if $folding-inner1 + local.get $9 i32.load offset=4 i32.const 8 i32.add - local.set $3 + 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 $1 - local.get $7 + local.set $6 + loop $for-loop|05 + local.get $2 + local.get $6 i32.lt_s if - local.get $1 + local.get $2 i32.const 2 i32.shl - local.get $3 + local.get $0 i32.add - local.get $1 + local.get $2 i32.const 3 i32.shl - local.get $6 + local.get $5 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $4 + local.get $4 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $4 i32.trunc_f64_u else i32.const 0 end i32.store - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 - br $for-loop|04 + local.set $2 + br $for-loop|05 end end i32.const 10 @@ -44377,35 +43116,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 $2 + local.get $9 + local.get $8 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $1 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 @@ -44474,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 @@ -44520,12 +43259,13 @@ (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) + (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -44542,149 +43282,149 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $7 i32.store - local.get $1 + local.get $7 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $7 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $1 + 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 $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $1 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $1 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $3 + 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 $5 + local.tee $2 i32.store offset=8 - local.get $5 + local.get $2 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $2 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $2 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Int64Array#constructor - local.tee $0 + local.tee $8 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 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 13264 call $~lib/rt/__newArray - local.set $4 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=16 - local.get $0 - local.get $4 + 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-inner0 + block $folding-inner1 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 + br_if $folding-inner1 + 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 $0 + local.get $6 i32.lt_s if - local.get $2 + local.get $0 i32.const 3 i32.shl - local.get $4 + local.get $9 i32.add - local.get $2 + local.get $0 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 $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|0 end end @@ -44693,87 +43433,85 @@ i32.const 67 i32.const 13424 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 $8 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $0 - local.get $1 + local.get $8 + local.get $7 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 3 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 $0 - 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 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 16 i32.add - local.set $2 + local.set $0 i32.const 11188 i32.load - local.set $4 + local.set $6 i32.const 11196 i32.load - local.set $6 - loop $for-loop|04 - local.get $1 - local.get $6 + local.set $7 + loop $for-loop|05 + local.get $3 + local.get $7 i32.lt_s if - local.get $4 - local.get $1 + local.get $6 + local.get $3 i32.const 3 i32.shl - local.tee $7 + local.tee $9 i32.add f64.load - local.set $8 - local.get $2 - local.get $7 + local.set $4 + local.get $0 + 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 $3 i32.const 1 i32.add - local.set $1 - br $for-loop|04 + local.set $3 + br $for-loop|05 end end i32.const 10 @@ -44781,35 +43519,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 $1 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $8 + local.get $2 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 @@ -44878,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 @@ -44924,12 +43662,13 @@ (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) + (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -44946,149 +43685,149 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $7 i32.store - local.get $1 + local.get $7 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $7 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $1 + 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 $3 + local.tee $1 i32.store offset=4 - local.get $3 + local.get $1 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $1 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $1 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $3 + 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 $5 + local.tee $2 i32.store offset=8 - local.get $5 + local.get $2 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $2 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $2 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 + local.tee $8 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 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 13872 call $~lib/rt/__newArray - local.set $4 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=16 - local.get $0 - local.get $4 + 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-inner0 + block $folding-inner1 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 + br_if $folding-inner1 + 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 $0 + local.get $6 i32.lt_s if - local.get $2 + local.get $0 i32.const 3 i32.shl - local.get $4 + local.get $9 i32.add - local.get $2 + local.get $0 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 $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|0 end end @@ -45097,87 +43836,85 @@ i32.const 68 i32.const 14032 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 $8 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $0 - local.get $1 + local.get $8 + local.get $7 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 3 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 $0 - 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 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 16 i32.add - local.set $2 + local.set $0 i32.const 11188 i32.load - local.set $4 + local.set $6 i32.const 11196 i32.load - local.set $6 - loop $for-loop|04 - local.get $1 - local.get $6 + local.set $7 + loop $for-loop|05 + local.get $3 + local.get $7 i32.lt_s if - local.get $4 - local.get $1 + local.get $6 + local.get $3 i32.const 3 i32.shl - local.tee $7 + local.tee $9 i32.add f64.load - local.set $8 - local.get $2 - local.get $7 + local.set $4 + local.get $0 + 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 $3 i32.const 1 i32.add - local.set $1 - br $for-loop|04 + local.set $3 + br $for-loop|05 end end i32.const 10 @@ -45185,35 +43922,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 $1 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $8 + local.get $2 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 @@ -45282,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 @@ -45333,6 +44070,10 @@ (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 @@ -45349,74 +44090,74 @@ 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 i32.const 0 i32.store offset=16 - local.get $2 + local.get $5 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $6 i32.store - local.get $3 + local.get $6 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $6 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $3 + 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 + local.tee $7 i32.store offset=4 - local.get $1 + local.get $7 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $7 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $7 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $1 + 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 + local.tee $8 i32.store offset=8 - local.get $4 + local.get $8 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $8 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $8 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Float32Array#constructor - local.tee $2 + local.tee $10 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 @@ -45424,34 +44165,34 @@ block $folding-inner0 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 + local.set $9 i32.const 11012 i32.load - local.set $6 + local.set $11 i32.const 11020 i32.load - local.set $7 + local.set $12 loop $for-loop|0 local.get $0 - local.get $7 + local.get $12 i32.lt_s if + local.get $9 local.get $0 i32.const 2 i32.shl - local.tee $8 - local.get $5 + local.tee $5 i32.add - local.get $6 - local.get $8 + local.get $5 + local.get $11 i32.add i32.load f32.convert_i32_s @@ -45472,13 +44213,13 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $2 + local.get $10 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> @@ -45491,59 +44232,57 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $2 + local.get $10 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - i32.const 0 - local.set $0 - local.get $3 + local.get $6 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 $0 + local.get $6 i32.load offset=4 - local.set $6 - local.get $3 + local.set $5 + local.get $6 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 - loop $for-loop|01 - local.get $0 - local.get $3 + local.set $6 + loop $for-loop|02 + local.get $1 + local.get $6 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $5 - i32.add local.get $0 + i32.add + local.get $1 i32.const 3 i32.shl - local.get $6 + local.get $5 i32.add i64.load f32.convert_i64_s f32.store - 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 10 @@ -45551,142 +44290,136 @@ i32.const 61 i32.const 14656 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 $2 - local.get $3 + local.get $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - i32.const 0 - local.set $0 - local.get $1 + local.get $7 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.set $0 + local.get $7 i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 local.set $1 - loop $for-loop|03 - local.get $0 - local.get $1 + local.get $7 + i32.load offset=8 + local.set $5 + loop $for-loop|06 + 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 + i32.add + local.get $1 + local.get $2 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 - br $for-loop|03 + local.set $2 + br $for-loop|06 end end - i32.const 0 - local.set $1 - local.get $4 + local.get $8 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 - i32.load offset=4 local.set $0 - local.get $4 + local.get $8 + i32.load offset=4 + 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 $1 - 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 $1 + local.get $3 i32.const 2 i32.shl - local.get $3 + local.get $0 i32.add - local.get $1 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $1 i32.add i32.load16_s f32.convert_i32_s f32.store - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|05 + local.set $3 + 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 $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 $1 i32.const 11276 i32.load - local.set $0 - loop $for-loop|09 - local.get $0 - local.get $1 + 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 $3 + local.get $0 i32.add local.get $1 local.get $4 @@ -45694,11 +44427,11 @@ 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 @@ -45706,12 +44439,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 @@ -45780,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 @@ -45828,6 +44561,11 @@ (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 @@ -45844,74 +44582,74 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $6 i64.const 0 i64.store - local.get $2 + local.get $6 i64.const 0 i64.store offset=8 - local.get $2 + local.get $6 i32.const 0 i32.store offset=16 - local.get $2 + local.get $6 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $9 i32.store - local.get $3 + local.get $9 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $9 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $3 + 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 $1 + local.tee $6 i32.store offset=4 - local.get $1 + local.get $6 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $6 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $6 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $1 + 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 $4 + local.tee $7 i32.store offset=8 - local.get $4 + local.get $7 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $7 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $7 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Float64Array#constructor - local.tee $2 + local.tee $10 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 11008 @@ -45919,35 +44657,35 @@ block $folding-inner0 i32.const 11020 i32.load - local.get $2 + local.get $10 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 i32.load offset=4 - local.set $5 + local.set $11 i32.const 11012 i32.load - local.set $6 + local.set $12 i32.const 11020 i32.load - local.set $7 + local.set $8 loop $for-loop|0 local.get $0 - local.get $7 + local.get $8 i32.lt_s if local.get $0 i32.const 3 i32.shl - local.get $5 + local.get $11 i32.add local.get $0 i32.const 2 i32.shl - local.get $6 + local.get $12 i32.add i32.load f64.convert_i32_s @@ -45968,58 +44706,56 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $2 + 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 $0 i32.const 11100 i32.load i32.const 3 i32.add - local.get $2 + local.get $10 i32.load offset=8 i32.const 3 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.set $0 i32.const 11092 i32.load - local.set $6 + local.set $8 i32.const 11100 i32.load - local.set $7 - loop $for-loop|04 - local.get $0 - local.get $7 + local.set $11 + loop $for-loop|05 + local.get $1 + local.get $11 i32.lt_s if - local.get $0 + local.get $1 i32.const 3 i32.shl - local.get $5 - i32.add local.get $0 + i32.add + local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $8 i32.add f32.load f64.promote_f32 f64.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|04 + local.set $1 + br $for-loop|05 end end i32.const 10 @@ -46031,58 +44767,56 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $2 + local.get $10 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - i32.const 0 - local.set $0 - local.get $3 + local.get $9 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 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 i32.load offset=4 i32.const 48 i32.add - local.set $5 - local.get $3 + local.set $0 + local.get $9 i32.load offset=4 - local.set $6 - local.get $3 + local.set $1 + local.get $9 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 - loop $for-loop|06 - local.get $0 - local.get $3 + local.set $8 + loop $for-loop|09 + local.get $5 + local.get $8 i32.lt_s if - local.get $5 local.get $0 + local.get $5 i32.const 3 i32.shl - local.tee $7 + local.tee $9 i32.add - local.get $6 - local.get $7 + local.get $1 + local.get $9 i32.add i64.load f64.convert_i64_s f64.store - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 - br $for-loop|06 + local.set $5 + br $for-loop|09 end end i32.const 10 @@ -46090,142 +44824,136 @@ i32.const 62 i32.const 15056 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 $2 - local.get $3 + local.get $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - i32.const 0 - local.set $0 - local.get $1 + local.get $6 i32.load offset=8 - local.get $2 + local.get $10 i32.load offset=8 i32.const 3 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.set $0 + local.get $6 i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 local.set $1 - loop $for-loop|08 - local.get $0 - local.get $1 + local.get $6 + i32.load offset=8 + local.set $5 + loop $for-loop|013 + local.get $2 + local.get $5 i32.lt_s if - local.get $0 + local.get $2 i32.const 3 i32.shl - local.get $3 - i32.add local.get $0 - local.get $5 + i32.add + local.get $1 + local.get $2 i32.add i32.load8_u f64.convert_i32_u f64.store - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 - br $for-loop|08 + local.set $2 + br $for-loop|013 end end - i32.const 0 - local.set $1 - local.get $4 + local.get $7 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 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 i32.load offset=4 i32.const 32 i32.add - local.set $3 - local.get $4 - i32.load offset=4 local.set $0 - local.get $4 + local.get $7 + i32.load offset=4 + 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 $1 - 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 $1 + local.get $3 i32.const 3 i32.shl - local.get $3 + local.get $0 i32.add - local.get $1 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $1 i32.add i32.load16_s f64.convert_i32_s f64.store - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|010 + local.set $3 + br $for-loop|017 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 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 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 - loop $for-loop|014 - local.get $0 - local.get $1 + local.set $2 + loop $for-loop|023 + local.get $2 + local.get $4 i32.gt_s if - local.get $1 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $0 i32.add local.get $1 local.get $4 @@ -46233,11 +44961,11 @@ i32.load8_s f64.convert_i32_s f64.store - local.get $1 + local.get $4 i32.const 1 i32.add - local.set $1 - br $for-loop|014 + local.set $4 + br $for-loop|023 end end i32.const 10 @@ -46245,12 +44973,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 $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -46271,52 +44999,107 @@ (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 $9 i32) (local $10 i32) - (local $11 f32) - (local $12 f64) - (local $13 i64) - (local $14 f32) - (local $15 f64) + (local $11 i64) + (local $12 i32) + (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-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-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 @@ -46326,7 +45109,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -46574,9 +45357,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 +45373,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 +45388,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 32 i32.ne @@ -46619,16 +45402,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 +45420,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 +45429,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 @@ -46720,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 @@ -46756,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 @@ -46768,7 +45551,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 0 i32.const 0 i32.const 2147483647 @@ -46782,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 @@ -46794,7 +45577,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 1 i32.const 0 i32.const -3 @@ -46808,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 @@ -46820,7 +45603,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 2 i32.const -2 i32.const 2147483647 @@ -46834,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 @@ -46846,7 +45629,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 0 i32.const 1 i32.const 0 @@ -46860,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 @@ -46873,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 @@ -46896,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 @@ -46911,7 +45694,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.ne @@ -46932,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 @@ -46953,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 @@ -46968,65 +45751,65 @@ 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 $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 1 i32.gt_u select - local.set $1 + local.set $0 i32.const 3 - local.get $0 - local.get $0 + local.get $2 + local.get $2 i32.const 3 i32.gt_u select - local.set $0 + local.set $2 loop $for-loop|0 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 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 @@ -47039,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 @@ -47051,27 +45834,25 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.load offset=4 - local.set $2 - i32.const 0 - local.get $4 + local.set $3 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 - select + local.set $2 + i32.const 0 local.set $0 loop $for-loop|01 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 0 i32.store @@ -47091,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 @@ -47103,44 +45884,40 @@ 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.get $4 + local.set $0 + local.get $6 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 $2 i32.const 0 - local.get $0 + local.get $2 i32.const 0 i32.gt_s select - local.set $0 + local.set $2 loop $for-loop|03 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 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 @@ -47153,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 @@ -47165,14 +45942,14 @@ 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.tee $1 + local.tee $2 i32.const 2 i32.sub local.tee $0 @@ -47184,13 +45961,13 @@ local.set $0 loop $for-loop|05 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 2 i32.store @@ -47210,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 @@ -47222,11 +45999,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.load offset=4 local.set $2 i32.const 1 - local.get $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u @@ -47235,28 +46012,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 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 @@ -47269,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 @@ -47282,33 +46054,31 @@ 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 - i32.const 0 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 - select + local.set $2 + i32.const 0 local.set $0 loop $for-loop|09 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 0 i32.store @@ -47319,7 +46089,7 @@ br $for-loop|09 end end - local.get $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u @@ -47333,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 @@ -47348,7 +46118,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.load offset=8 i32.const 12 i32.ne @@ -47369,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 @@ -47390,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 @@ -47638,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 @@ -47658,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 @@ -47671,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 @@ -47682,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 @@ -47695,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 @@ -47708,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 @@ -47719,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 @@ -47732,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 @@ -47745,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 @@ -47756,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 @@ -47769,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 @@ -47782,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 @@ -47793,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 @@ -47806,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 @@ -47819,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 @@ -47830,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 @@ -47843,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 @@ -47856,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 @@ -47867,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 @@ -47880,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 @@ -47893,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 @@ -47904,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 @@ -47917,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 @@ -47930,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 @@ -47941,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 @@ -47954,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 @@ -47967,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 @@ -47978,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 @@ -47991,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 @@ -48004,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 @@ -48015,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 @@ -48028,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 @@ -48041,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 @@ -48052,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 @@ -48065,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 @@ -48080,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 $0 + local.tee $2 i32.store offset=16 - local.get $0 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -48123,9 +46893,9 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.load offset=4 - local.get $0 + local.get $2 i32.load i32.sub i32.const 4 @@ -48138,7 +46908,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.load offset=8 i32.const 12 i32.ne @@ -48151,13 +46921,13 @@ 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 - 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 +46940,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 +46953,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 +46967,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 +46980,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 8 i32.ne @@ -48223,7 +46993,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#slice @@ -48282,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 @@ -48303,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 @@ -48321,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 @@ -48337,7 +47107,7 @@ end local.get $0 i32.load offset=8 - local.get $2 + local.get $3 i32.load offset=8 i32.ne if @@ -48355,7 +47125,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48363,57 +47133,57 @@ 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 + 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 + local.set $2 + loop $for-loop|010 + local.get $2 + local.get $10 i32.gt_s if - local.get $2 - local.get $5 + local.get $3 + local.get $10 i32.add i32.load8_s local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $53 local.get $0 - local.get $5 - local.get $3 + local.get $10 + 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 $53 + local.get $10 i32.const 1 i32.add - local.set $5 - br $for-loop|011 + local.set $10 + br $for-loop|010 end end - local.get $6 + local.get $53 i32.const 255 i32.and i32.const 6 @@ -48430,7 +47200,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48438,61 +47208,57 @@ 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 2928 i32.store offset=4 - i32.const 0 - local.set $5 - i32.const 0 - local.set $6 - 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|010 - local.get $1 - local.get $5 + local.set $2 + loop $for-loop|0511 + local.get $2 + local.get $8 i32.gt_s if - local.get $2 - local.get $5 + local.get $3 + local.get $8 i32.add i32.load8_u local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $54 local.get $0 - local.get $5 - local.get $3 + local.get $8 + 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 $54 + local.get $8 i32.const 1 i32.add - local.set $5 - br $for-loop|010 + local.set $8 + br $for-loop|0511 end end - local.get $6 + local.get $54 i32.const 255 i32.and i32.const 6 @@ -48509,7 +47275,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48517,61 +47283,57 @@ 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 2960 i32.store offset=4 - i32.const 0 - local.set $5 - i32.const 0 - local.set $6 - 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 + local.set $2 loop $for-loop|013 - local.get $1 - local.get $5 + local.get $2 + local.get $9 i32.gt_s if - local.get $2 - local.get $5 + local.get $3 + local.get $9 i32.add i32.load8_u local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $55 local.get $0 - local.get $5 - local.get $3 + local.get $9 + 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 $55 + local.get $9 i32.const 1 i32.add - local.set $5 + local.set $9 br $for-loop|013 end end - local.get $6 + local.get $55 i32.const 255 i32.and i32.const 6 @@ -48588,7 +47350,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48596,65 +47358,61 @@ 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 2992 i32.store offset=4 - i32.const 0 - local.set $5 - i32.const 0 - local.set $6 - 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|014 - local.get $1 - local.get $5 + local.set $2 + loop $for-loop|017 + local.get $2 + local.get $12 i32.gt_s if - local.get $5 + local.get $12 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $56 local.get $0 - local.get $5 - local.get $3 + local.get $12 + 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 $56 + local.get $12 i32.const 1 i32.add - local.set $5 - br $for-loop|014 + local.set $12 + br $for-loop|017 end end - local.get $6 + local.get $56 i32.const 65535 i32.and i32.const 6 @@ -48671,7 +47429,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48679,65 +47437,61 @@ 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 3024 i32.store offset=4 - i32.const 0 - local.set $5 - i32.const 0 - local.set $6 - 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|016 - local.get $1 - local.get $5 + local.set $2 + loop $for-loop|022 + local.get $2 + local.get $19 i32.gt_s if - local.get $5 + local.get $19 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $57 local.get $0 - local.get $5 - local.get $3 + local.get $19 + 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 $57 + local.get $19 i32.const 1 i32.add - local.set $5 - br $for-loop|016 + local.set $19 + br $for-loop|022 end end - local.get $6 + local.get $57 i32.const 65535 i32.and i32.const 6 @@ -48754,7 +47508,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48762,65 +47516,61 @@ 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 3056 i32.store offset=4 - i32.const 0 - local.set $5 - i32.const 0 - local.set $6 - 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|018 - local.get $1 - local.get $5 + local.set $2 + loop $for-loop|027 + local.get $2 + local.get $20 i32.gt_s if - local.get $5 + local.get $20 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $58 local.get $0 - local.get $5 - local.get $3 + local.get $20 + 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 $58 + local.get $20 i32.const 1 i32.add - local.set $5 - br $for-loop|018 + local.set $20 + br $for-loop|027 end end - local.get $6 + local.get $58 i32.const 6 i32.ne br_if $folding-inner1 @@ -48835,7 +47585,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48843,65 +47593,61 @@ 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 3088 i32.store offset=4 - i32.const 0 - local.set $5 - i32.const 0 - local.set $6 - 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|021 - local.get $1 - local.get $5 + local.set $2 + loop $for-loop|032 + local.get $2 + local.get $32 i32.gt_s if - local.get $5 + local.get $32 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $59 local.get $0 - local.get $5 - local.get $3 + local.get $32 + 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 $59 + local.get $32 i32.const 1 i32.add - local.set $5 - br $for-loop|021 + local.set $32 + br $for-loop|032 end end - local.get $6 + local.get $59 i32.const 6 i32.ne br_if $folding-inner1 @@ -48916,7 +47662,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48924,63 +47670,61 @@ 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 3120 i32.store offset=4 - i32.const 0 - local.set $5 - 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|023 + loop $for-loop|037 local.get $0 - local.get $5 + local.get $33 i32.gt_s if - local.get $5 + local.get $33 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $11 i32.const 4 global.set $~argumentsLength - local.get $13 - local.get $9 - local.get $5 - local.get $2 + 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 $5 + local.set $15 + local.get $33 i32.const 1 i32.add - local.set $5 - br $for-loop|023 + local.set $33 + br $for-loop|037 end end - local.get $13 + local.get $15 i64.const 6 i64.ne br_if $folding-inner1 @@ -48995,7 +47739,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49003,65 +47747,61 @@ 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 3152 i32.store offset=4 - i32.const 0 - local.set $5 - 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 + loop $for-loop|042 local.get $0 - local.get $5 + local.get $34 i32.gt_s if - local.get $5 + local.get $34 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $11 i32.const 4 global.set $~argumentsLength - local.get $13 - local.get $9 - local.get $5 - local.get $2 + 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 $5 + local.set $60 + local.get $34 i32.const 1 i32.add - local.set $5 - br $for-loop|025 + local.set $34 + br $for-loop|042 end end - local.get $13 + local.get $60 i64.const 6 i64.ne br_if $folding-inner1 @@ -49076,7 +47816,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49084,63 +47824,61 @@ 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 3184 i32.store offset=4 - i32.const 0 - local.set $5 - 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|027 + loop $for-loop|047 local.get $0 - local.get $5 + local.get $35 i32.gt_s if - local.get $5 + local.get $35 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 $17 local.get $5 - local.get $2 + 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 $5 + local.set $17 + local.get $35 i32.const 1 i32.add - local.set $5 - br $for-loop|027 + local.set $35 + br $for-loop|047 end end - local.get $14 + local.get $17 f32.const 6 f32.ne br_if $folding-inner1 @@ -49155,7 +47893,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49163,63 +47901,61 @@ 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 3216 i32.store offset=4 - i32.const 0 - local.set $5 - 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|029 + loop $for-loop|052 local.get $0 - local.get $5 + local.get $36 i32.gt_s if - local.get $5 + local.get $36 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 $18 + local.get $7 + 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 $5 + local.set $18 + local.get $36 i32.const 1 i32.add - local.set $5 - br $for-loop|029 + local.set $36 + br $for-loop|052 end end - local.get $15 + local.get $18 f64.const 6 f64.ne br_if $folding-inner1 @@ -49234,7 +47970,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49285,7 +48021,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49336,7 +48072,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49387,7 +48123,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49438,7 +48174,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49489,7 +48225,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49540,7 +48276,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49591,7 +48327,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49642,7 +48378,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49693,7 +48429,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49744,7 +48480,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49795,7 +48531,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49803,61 +48539,59 @@ 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 global.get $~lib/memory/__stack_pointer i32.const 3248 i32.store offset=4 - i32.const 0 - local.set $5 - local.get $2 + 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 $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 $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 - local.get $0 - local.get $3 + local.get $61 local.get $2 + local.get $0 + 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 $61 + local.get $0 i32.const 1 i32.sub - local.set $3 - br $for-loop|031 + local.set $0 + br $for-loop|059 end end - local.get $5 + local.get $61 i32.const 255 i32.and i32.const 6 @@ -49874,7 +48608,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49882,61 +48616,59 @@ 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 global.get $~lib/memory/__stack_pointer i32.const 3280 i32.store offset=4 - i32.const 0 - local.set $5 - local.get $2 + 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 $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 $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 - local.get $0 - local.get $3 + local.get $62 local.get $2 + local.get $0 + local.get $4 i32.const 3280 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $62 + local.get $0 i32.const 1 i32.sub - local.set $3 - br $for-loop|033 + local.set $0 + br $for-loop|064 end end - local.get $5 + local.get $62 i32.const 255 i32.and i32.const 6 @@ -49953,7 +48685,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49961,61 +48693,59 @@ 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 global.get $~lib/memory/__stack_pointer i32.const 3312 i32.store offset=4 - i32.const 0 - local.set $5 - local.get $2 + 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 $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 $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 - local.get $0 - local.get $3 + local.get $63 local.get $2 + local.get $0 + local.get $4 i32.const 3312 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $63 + local.get $0 i32.const 1 i32.sub - local.set $3 - br $for-loop|036 + local.set $0 + br $for-loop|071 end end - local.get $5 + local.get $63 i32.const 255 i32.and i32.const 6 @@ -50032,7 +48762,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50040,65 +48770,63 @@ 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 global.get $~lib/memory/__stack_pointer i32.const 3344 i32.store offset=4 - i32.const 0 - local.set $5 - local.get $2 + 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 $0 + loop $for-loop|076 + local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $0 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 $68 local.get $2 + local.get $0 + 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 $68 + local.get $0 i32.const 1 i32.sub - local.set $3 - br $for-loop|038 + local.set $0 + br $for-loop|076 end end - local.get $5 + local.get $68 i32.const 65535 i32.and i32.const 6 @@ -50115,7 +48843,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50123,65 +48851,63 @@ 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 global.get $~lib/memory/__stack_pointer i32.const 3376 i32.store offset=4 - i32.const 0 - local.set $5 - local.get $2 + 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 $0 + loop $for-loop|081 + local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $0 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 $69 local.get $2 + local.get $0 + 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 $69 + local.get $0 i32.const 1 i32.sub - local.set $3 - br $for-loop|040 + local.set $0 + br $for-loop|081 end end - local.get $5 + local.get $69 i32.const 65535 i32.and i32.const 6 @@ -50198,7 +48924,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50206,65 +48932,63 @@ 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 global.get $~lib/memory/__stack_pointer i32.const 3408 i32.store offset=4 - i32.const 0 - local.set $5 - local.get $2 + 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 $0 + loop $for-loop|086 + local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $0 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 $70 local.get $2 + local.get $0 + 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 $70 + local.get $0 i32.const 1 i32.sub - local.set $3 - br $for-loop|042 + local.set $0 + br $for-loop|086 end end - local.get $5 + local.get $70 i32.const 6 i32.ne br_if $folding-inner5 @@ -50279,7 +49003,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50287,65 +49011,63 @@ 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 global.get $~lib/memory/__stack_pointer i32.const 3440 i32.store offset=4 - i32.const 0 - local.set $5 - local.get $2 + 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 $0 + loop $for-loop|091 + local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $0 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 $71 local.get $2 + local.get $0 + 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 $71 + local.get $0 i32.const 1 i32.sub - local.set $3 - br $for-loop|044 + local.set $0 + br $for-loop|091 end end - local.get $5 + local.get $71 i32.const 6 i32.ne br_if $folding-inner5 @@ -50360,7 +49082,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50368,65 +49090,63 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $3 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + 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 $1 + local.get $3 i32.load offset=4 - local.set $0 - local.get $1 + local.set $2 + local.get $3 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 $0 + loop $for-loop|096 + local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $2 i32.add i64.load - local.set $9 + local.set $11 i32.const 4 global.set $~argumentsLength - local.get $13 - local.get $9 + local.get $64 + local.get $11 + local.get $0 local.get $3 - local.get $1 i32.const 3472 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $13 - local.get $3 + local.set $64 + local.get $0 i32.const 1 i32.sub - local.set $3 - br $for-loop|046 + local.set $0 + br $for-loop|096 end end - local.get $13 + local.get $64 i64.const 6 i64.ne br_if $folding-inner5 @@ -50441,7 +49161,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50449,65 +49169,63 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $3 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + 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 $1 + local.get $3 i32.load offset=4 - local.set $0 - local.get $1 + local.set $2 + local.get $3 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 $0 + loop $for-loop|0101 + local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $2 i32.add i64.load - local.set $9 + local.set $11 i32.const 4 global.set $~argumentsLength - local.get $13 - local.get $9 + local.get $65 + local.get $11 + local.get $0 local.get $3 - local.get $1 i32.const 3504 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $13 - local.get $3 + local.set $65 + local.get $0 i32.const 1 i32.sub - local.set $3 - br $for-loop|048 + local.set $0 + br $for-loop|0101 end end - local.get $13 + local.get $65 i64.const 6 i64.ne br_if $folding-inner5 @@ -50522,7 +49240,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50530,65 +49248,63 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $3 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + 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 $1 + local.get $3 i32.load offset=4 - local.set $0 - local.get $1 + local.set $2 + local.get $3 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 $0 + loop $for-loop|0106 + local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $0 i32.const 2 i32.shl - local.get $0 + 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 $66 + local.get $5 + local.get $0 local.get $3 - local.get $1 i32.const 3536 i32.load call_indirect $0 (type $f32_f32_i32_i32_=>_f32) - local.set $14 - local.get $3 + local.set $66 + local.get $0 i32.const 1 i32.sub - local.set $3 - br $for-loop|050 + local.set $0 + br $for-loop|0106 end end - local.get $14 + local.get $66 f32.const 6 f32.ne br_if $folding-inner5 @@ -50603,7 +49319,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50611,65 +49327,63 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $3 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + 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 $1 + local.get $3 i32.load offset=4 - local.set $0 - local.get $1 + local.set $2 + local.get $3 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 $0 + loop $for-loop|0111 + local.get $0 i32.const 0 i32.ge_s if - local.get $3 + local.get $0 i32.const 3 i32.shl - local.get $0 + 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 $67 + local.get $7 + local.get $0 local.get $3 - local.get $1 i32.const 3568 i32.load call_indirect $0 (type $f64_f64_i32_i32_=>_f64) - local.set $15 - local.get $3 + local.set $67 + local.get $0 i32.const 1 i32.sub - local.set $3 - br $for-loop|052 + local.set $0 + br $for-loop|0111 end end - local.get $15 + local.get $67 f64.const 6 f64.ne br_if $folding-inner5 @@ -50678,7 +49392,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $5 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50686,7 +49400,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50697,125 +49411,128 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $0 + local.tee $9 i32.store - local.get $0 + local.get $9 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $9 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + 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-inner23 + br_if $folding-inner22 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 + local.set $6 + local.get $9 + i32.load offset=4 local.set $4 local.get $0 - i32.load offset=4 - local.set $2 - local.get $1 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 + 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 $6 + local.tee $2 i32.store offset=4 loop $for-loop|02 - local.get $4 - local.get $5 + local.get $6 + local.get $10 i32.gt_s if - local.get $2 - local.get $5 + local.get $4 + local.get $10 i32.add i32.load8_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $6 + local.get $2 + local.get $10 i32.add - local.get $1 - local.get $5 local.get $0 + local.get $10 + local.get $9 i32.const 3600 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $5 + local.get $10 i32.const 1 i32.add - local.set $5 + local.set $10 br $for-loop|02 end end - local.get $7 - local.get $6 + local.get $3 + local.get $2 i32.store - local.get $7 - local.get $6 - call $~lib/rt/itcms/__link - local.get $7 - local.get $6 + local.get $2 + if + local.get $3 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $2 i32.store offset=4 - local.get $7 - 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 $7 + local.get $3 i32.store offset=8 - local.get $7 + local.get $3 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $7 + br_if $folding-inner16 + local.get $3 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $7 + br_if $folding-inner19 + local.get $3 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + 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 $5 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50823,7 +49540,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50834,125 +49551,128 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + local.tee $9 i32.store - local.get $0 + local.get $9 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $9 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + 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-inner23 + br_if $folding-inner22 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 + local.set $6 + local.get $9 + i32.load offset=4 local.set $4 local.get $0 - i32.load offset=4 - local.set $2 - local.get $1 i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $7 + 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 $6 + local.tee $2 i32.store offset=4 loop $for-loop|04 - local.get $4 - local.get $5 + local.get $6 + local.get $10 i32.gt_s if - local.get $2 - local.get $5 + local.get $4 + local.get $10 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $6 + local.get $2 + local.get $10 i32.add - local.get $1 - local.get $5 local.get $0 + local.get $10 + local.get $9 i32.const 3632 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $5 + local.get $10 i32.const 1 i32.add - local.set $5 + local.set $10 br $for-loop|04 end end - local.get $7 - local.get $6 + local.get $3 + local.get $2 i32.store - local.get $7 - local.get $6 - call $~lib/rt/itcms/__link - local.get $7 - local.get $6 + local.get $2 + if + local.get $3 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $2 i32.store offset=4 - local.get $7 - 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 $7 + local.get $3 i32.store offset=8 - local.get $7 + local.get $3 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $7 + br_if $folding-inner16 + local.get $3 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $7 + br_if $folding-inner19 + local.get $3 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + 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 $5 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50960,7 +49680,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50971,119 +49691,122 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 + local.tee $9 i32.store - local.get $0 + local.get $9 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $9 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + 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-inner23 + br_if $folding-inner22 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 + local.set $6 + local.get $9 + i32.load offset=4 local.set $4 local.get $0 - i32.load offset=4 - local.set $2 - local.get $1 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $7 + 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 $6 + local.tee $2 i32.store offset=4 - loop $for-loop|06 - local.get $4 - local.get $5 + loop $for-loop|08 + local.get $6 + local.get $10 i32.gt_s if - local.get $2 - local.get $5 + local.get $4 + local.get $10 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $6 + local.get $2 + local.get $10 i32.add - local.get $1 - local.get $5 local.get $0 + local.get $10 + local.get $9 i32.const 3664 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $5 + local.get $10 i32.const 1 i32.add - local.set $5 - br $for-loop|06 + local.set $10 + br $for-loop|08 end end - local.get $7 - local.get $6 + local.get $3 + local.get $2 i32.store - local.get $7 - local.get $6 - call $~lib/rt/itcms/__link - local.get $7 - local.get $6 + local.get $2 + if + local.get $3 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $2 i32.store offset=4 - local.get $7 - 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 $7 + local.get $3 i32.store offset=8 - local.get $7 + local.get $3 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $7 + br_if $folding-inner16 + local.get $3 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $7 + br_if $folding-inner19 + local.get $3 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner21 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -51095,7 +49818,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51106,133 +49829,136 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $0 + local.tee $12 i32.store - local.get $0 + local.get $12 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $12 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $12 i32.load offset=8 i32.const 1 i32.shr_u - local.set $5 - local.get $0 + local.set $9 + local.get $12 i32.load offset=4 - local.set $4 - local.get $1 + local.set $8 + local.get $0 i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 i32.const 1 i32.shl - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $3 i32.store offset=4 - loop $for-loop|08 - local.get $5 - local.get $8 + loop $for-loop|06 + local.get $9 + local.get $14 i32.gt_s if - local.get $4 local.get $8 + local.get $14 i32.const 1 i32.shl local.tee $2 i32.add i32.load16_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength local.get $2 - local.get $7 + local.get $3 i32.add - local.get $1 - local.get $8 local.get $0 + local.get $14 + local.get $12 i32.const 3696 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 - local.get $8 + local.get $14 i32.const 1 i32.add - local.set $8 - br $for-loop|08 + local.set $14 + br $for-loop|06 end end - local.get $10 - local.get $7 + local.get $6 + local.get $3 i32.store - local.get $10 - local.get $7 - call $~lib/rt/itcms/__link - local.get $10 - local.get $7 - i32.store offset=4 - local.get $10 local.get $3 + if + local.get $6 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $6 + local.get $3 + i32.store offset=4 + local.get $6 + local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $6 i32.store offset=8 - local.get $10 + local.get $6 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $10 + br_if $folding-inner16 + local.get $6 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $10 + br_if $folding-inner19 + local.get $6 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + 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 $8 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51240,7 +49966,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51251,133 +49977,136 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $0 + local.tee $12 i32.store - local.get $0 + local.get $12 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $12 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $12 i32.load offset=8 i32.const 1 i32.shr_u - local.set $5 - local.get $0 + local.set $9 + local.get $12 i32.load offset=4 - local.set $4 - local.get $1 + local.set $8 + local.get $0 i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 i32.const 1 i32.shl - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $3 i32.store offset=4 - loop $for-loop|012 - local.get $5 - local.get $8 + loop $for-loop|011 + local.get $9 + local.get $14 i32.gt_s if - local.get $4 local.get $8 + local.get $14 i32.const 1 i32.shl local.tee $2 i32.add i32.load16_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength local.get $2 - local.get $7 + local.get $3 i32.add - local.get $1 - local.get $8 local.get $0 + local.get $14 + local.get $12 i32.const 3728 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 - local.get $8 + local.get $14 i32.const 1 i32.add - local.set $8 - br $for-loop|012 + local.set $14 + br $for-loop|011 end end - local.get $10 - local.get $7 + local.get $6 + local.get $3 i32.store - local.get $10 - local.get $7 - call $~lib/rt/itcms/__link - local.get $10 - local.get $7 - i32.store offset=4 - local.get $10 local.get $3 + if + local.get $6 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $6 + local.get $3 + i32.store offset=4 + local.get $6 + local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $6 i32.store offset=8 - local.get $10 + local.get $6 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $10 + br_if $folding-inner16 + local.get $6 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $10 + br_if $folding-inner19 + local.get $6 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + 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 $8 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51385,7 +50114,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51396,133 +50125,136 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $0 + local.tee $12 i32.store - local.get $0 + local.get $12 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $12 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $12 i32.load offset=8 i32.const 2 i32.shr_u - local.set $5 - local.get $0 + local.set $9 + local.get $12 i32.load offset=4 - local.set $4 - local.get $1 + local.set $8 + local.get $0 i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 i32.const 2 i32.shl - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $3 i32.store offset=4 - loop $for-loop|015 - local.get $5 - local.get $8 + loop $for-loop|014 + local.get $9 + local.get $14 i32.gt_s if - local.get $4 local.get $8 + local.get $14 i32.const 2 i32.shl local.tee $2 i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength local.get $2 - local.get $7 + local.get $3 i32.add - local.get $1 - local.get $8 local.get $0 + local.get $14 + local.get $12 i32.const 3760 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $8 + local.get $14 i32.const 1 i32.add - local.set $8 - br $for-loop|015 + local.set $14 + br $for-loop|014 end end - local.get $10 - local.get $7 + local.get $6 + local.get $3 i32.store - local.get $10 - local.get $7 - call $~lib/rt/itcms/__link - local.get $10 - local.get $7 - i32.store offset=4 - local.get $10 local.get $3 + if + local.get $6 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $6 + local.get $3 + i32.store offset=4 + local.get $6 + local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $6 i32.store offset=8 - local.get $10 + local.get $6 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $10 + br_if $folding-inner16 + local.get $6 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $10 + br_if $folding-inner19 + local.get $6 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + 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 $8 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51530,7 +50262,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51541,133 +50273,136 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 + local.tee $12 i32.store - local.get $0 + local.get $12 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $12 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $12 i32.load offset=8 i32.const 2 i32.shr_u - local.set $5 - local.get $0 + local.set $9 + local.get $12 i32.load offset=4 - local.set $4 - local.get $1 + local.set $8 + local.get $0 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 i32.const 2 i32.shl - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $3 i32.store offset=4 - loop $for-loop|017 - local.get $5 - local.get $8 + loop $for-loop|016 + local.get $9 + local.get $14 i32.gt_s if - local.get $4 local.get $8 + local.get $14 i32.const 2 i32.shl local.tee $2 i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength local.get $2 - local.get $7 + local.get $3 i32.add - local.get $1 - local.get $8 local.get $0 + local.get $14 + local.get $12 i32.const 3792 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $8 + local.get $14 i32.const 1 i32.add - local.set $8 - br $for-loop|017 + local.set $14 + br $for-loop|016 end end - local.get $10 - local.get $7 + local.get $6 + local.get $3 i32.store - local.get $10 - local.get $7 - call $~lib/rt/itcms/__link - local.get $10 - local.get $7 - i32.store offset=4 - local.get $10 local.get $3 + if + local.get $6 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $6 + local.get $3 + i32.store offset=4 + local.get $6 + local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $6 i32.store offset=8 - local.get $10 + local.get $6 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $10 + br_if $folding-inner16 + local.get $6 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $10 + br_if $folding-inner19 + local.get $6 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + 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 $7 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51675,7 +50410,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51686,133 +50421,136 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $0 + local.tee $10 i32.store - local.get $0 + local.get $10 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $10 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $10 i32.load offset=8 i32.const 3 i32.shr_u + local.set $8 + local.get $10 + i32.load offset=4 local.set $6 local.get $0 - i32.load offset=4 - local.set $3 - local.get $1 i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $8 + 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 $5 + local.tee $2 i32.store offset=4 - loop $for-loop|019 - local.get $6 - local.get $7 + loop $for-loop|018 + local.get $8 + local.get $14 i32.gt_s if - local.get $3 - local.get $7 + local.get $6 + local.get $14 i32.const 3 i32.shl - local.tee $1 + local.tee $0 i32.add i64.load - local.set $9 + local.set $11 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $5 - i32.add - local.get $9 - local.get $7 local.get $0 + local.get $2 + i32.add + local.get $11 + local.get $14 + local.get $10 i32.const 3824 i32.load call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store - local.get $7 + local.get $14 i32.const 1 i32.add - local.set $7 - br $for-loop|019 + local.set $14 + br $for-loop|018 end end - local.get $8 - local.get $5 + local.get $4 + local.get $2 i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 - i32.store offset=4 - local.get $8 local.get $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 $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 $8 + local.get $4 i32.store offset=8 - local.get $8 + local.get $4 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne - br_if $folding-inner20 - local.get $8 + br_if $folding-inner16 + local.get $4 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 4 i64.ne - br_if $folding-inner21 - local.get $8 + br_if $folding-inner19 + local.get $4 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 9 i64.ne - br_if $folding-inner22 + 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 $7 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51820,7 +50558,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51831,133 +50569,136 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 + local.tee $10 i32.store - local.get $0 + local.get $10 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $10 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $10 i32.load offset=8 i32.const 3 i32.shr_u + local.set $8 + local.get $10 + i32.load offset=4 local.set $6 local.get $0 - i32.load offset=4 - local.set $3 - local.get $1 i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $8 + 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 $5 + local.tee $2 i32.store offset=4 - loop $for-loop|022 - local.get $6 - local.get $7 + loop $for-loop|020 + local.get $8 + local.get $14 i32.gt_s if - local.get $3 - local.get $7 + local.get $6 + local.get $14 i32.const 3 i32.shl - local.tee $1 + local.tee $0 i32.add i64.load - local.set $9 + local.set $11 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $5 - i32.add - local.get $9 - local.get $7 local.get $0 + local.get $2 + i32.add + local.get $11 + local.get $14 + local.get $10 i32.const 3856 i32.load call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store - local.get $7 + local.get $14 i32.const 1 i32.add - local.set $7 - br $for-loop|022 + local.set $14 + br $for-loop|020 end end - local.get $8 - local.get $5 + local.get $4 + local.get $2 i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 - i32.store offset=4 - local.get $8 local.get $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 $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 $8 + local.get $4 i32.store offset=8 - local.get $8 + local.get $4 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne - br_if $folding-inner20 - local.get $8 + br_if $folding-inner16 + local.get $4 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 4 i64.ne - br_if $folding-inner21 - local.get $8 + br_if $folding-inner19 + local.get $4 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 9 i64.ne - br_if $folding-inner22 + 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 $7 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51965,7 +50706,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51976,133 +50717,136 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $0 + local.tee $10 i32.store - local.get $0 + local.get $10 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $10 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $10 i32.load offset=8 i32.const 2 i32.shr_u + local.set $8 + local.get $10 + i32.load offset=4 local.set $6 local.get $0 - i32.load offset=4 - local.set $3 - local.get $1 i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $8 + 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 $5 + local.tee $2 i32.store offset=4 - loop $for-loop|024 - local.get $6 - local.get $7 + loop $for-loop|023 + local.get $8 + local.get $14 i32.gt_s if - local.get $3 - local.get $7 + local.get $6 + local.get $14 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 $1 - local.get $5 - i32.add - local.get $11 - local.get $7 local.get $0 + local.get $2 + i32.add + local.get $5 + local.get $14 + local.get $10 i32.const 3888 i32.load call_indirect $0 (type $f32_i32_i32_=>_f32) f32.store - local.get $7 + local.get $14 i32.const 1 i32.add - local.set $7 - br $for-loop|024 + local.set $14 + br $for-loop|023 end end - local.get $8 - local.get $5 + local.get $4 + local.get $2 i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 - i32.store offset=4 - local.get $8 local.get $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 $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 $8 + local.get $4 i32.store offset=8 - local.get $8 + local.get $4 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne - br_if $folding-inner20 - local.get $8 + br_if $folding-inner16 + local.get $4 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 f32.ne - br_if $folding-inner21 - local.get $8 + br_if $folding-inner19 + local.get $4 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 9 f32.ne - br_if $folding-inner22 + 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 $7 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -52110,7 +50854,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52121,127 +50865,130 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $0 + local.tee $10 i32.store - local.get $0 + local.get $10 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $10 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $10 i32.load offset=8 i32.const 3 i32.shr_u + local.set $8 + local.get $10 + i32.load offset=4 local.set $6 local.get $0 - i32.load offset=4 - local.set $3 - local.get $1 i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $8 + 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 $5 + local.tee $2 i32.store offset=4 - loop $for-loop|026 - local.get $6 - local.get $7 + loop $for-loop|025 + local.get $8 + local.get $14 i32.gt_s if - local.get $3 - local.get $7 + local.get $6 + local.get $14 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 $1 - local.get $5 + local.get $0 + local.get $2 i32.add - local.get $12 local.get $7 - local.get $0 + local.get $14 + local.get $10 i32.const 3920 i32.load call_indirect $0 (type $f64_i32_i32_=>_f64) f64.store - local.get $7 + local.get $14 i32.const 1 i32.add - local.set $7 - br $for-loop|026 + local.set $14 + br $for-loop|025 end end - local.get $8 - local.get $5 + local.get $4 + local.get $2 i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 - i32.store offset=4 - local.get $8 local.get $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 $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 $8 + local.get $4 i32.store offset=8 - local.get $8 + local.get $4 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne - br_if $folding-inner20 - local.get $8 + br_if $folding-inner16 + local.get $4 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 4 f64.ne - br_if $folding-inner21 - local.get $8 + br_if $folding-inner19 + local.get $4 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 9 f64.ne - br_if $folding-inner22 + br_if $folding-inner21 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -52257,6 +51004,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 $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52264,91 +51013,87 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $1 - loop $for-loop|045 - local.get $1 - local.get $6 - i32.gt_s + local.set $3 + loop $for-loop|012 + local.get $0 + local.get $3 + i32.lt_s if - local.get $2 - local.get $6 + 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 $6 - 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 $0 i32.const 1 i32.add - local.set $6 - br $for-loop|045 + local.set $0 + br $for-loop|012 end end i32.const 0 end i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4336 - i32.store offset=4 - i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.047 (result i32) - local.get $4 + br_if $folding-inner23 + block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4336 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $2 - local.get $4 + local.set $3 + local.get $6 i32.load offset=8 - local.set $1 - loop $for-loop|049 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|0410 + local.get $2 + local.get $13 i32.gt_s if - local.get $2 - local.get $6 + local.get $3 + local.get $13 i32.add i32.load8_s local.set $0 @@ -52356,27 +51101,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 + local.get $13 local.get $6 - 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 $13 i32.const 1 i32.add - local.set $6 - br $for-loop|049 + local.set $13 + br $for-loop|0410 end end i32.const 0 end - br_if $folding-inner7 + 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 @@ -52384,91 +51133,87 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $1 - loop $for-loop|051 - local.get $1 - local.get $6 - i32.gt_s + local.set $3 + loop $for-loop|01426 + local.get $0 + local.get $3 + i32.lt_s if - local.get $2 - local.get $6 + 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 $6 - 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 $0 i32.const 1 i32.add - local.set $6 - br $for-loop|051 + local.set $0 + br $for-loop|01426 end end i32.const 0 end i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4400 - i32.store offset=4 - i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.053 (result i32) - local.get $4 + br_if $folding-inner23 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4400 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $2 - local.get $4 + local.set $3 + local.get $6 i32.load offset=8 - local.set $1 - loop $for-loop|054 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|0415 + local.get $2 + local.get $13 i32.gt_s if - local.get $2 - local.get $6 + local.get $3 + local.get $13 i32.add i32.load8_u local.set $0 @@ -52476,27 +51221,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 + local.get $13 local.get $6 - 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 $13 i32.const 1 i32.add - local.set $6 - br $for-loop|054 + local.set $13 + br $for-loop|0415 end end i32.const 0 end - br_if $folding-inner7 + 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 @@ -52504,91 +51253,87 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.057 (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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $1 - loop $for-loop|058 - local.get $1 - local.get $6 - i32.gt_s + local.set $3 + loop $for-loop|01827 + local.get $0 + local.get $3 + i32.lt_s if - local.get $2 - local.get $6 + 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 $6 - 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.016 drop - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 - br $for-loop|058 + local.set $0 + br $for-loop|01827 end end i32.const 0 end i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4464 - i32.store offset=4 - i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.060 (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 $2 - local.get $4 + local.set $3 + local.get $6 i32.load offset=8 - local.set $1 - loop $for-loop|061 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|0420 + local.get $2 + local.get $13 i32.gt_s if - local.get $2 - local.get $6 + local.get $3 + local.get $13 i32.add i32.load8_u local.set $0 @@ -52596,27 +51341,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 + local.get $13 local.get $6 - 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.0119 drop - local.get $6 + local.get $13 i32.const 1 i32.add - local.set $6 - br $for-loop|061 + local.set $13 + br $for-loop|0420 end end i32.const 0 end - br_if $folding-inner7 + 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 @@ -52624,99 +51373,95 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|063 - local.get $1 - local.get $6 - i32.gt_s + local.set $3 + loop $for-loop|021 + local.get $0 + local.get $3 + i32.lt_s if - local.get $6 + local.get $0 i32.const 1 i32.shl - local.get $2 + 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 $6 - 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 $0 i32.const 1 i32.add - local.set $6 - br $for-loop|063 + local.set $0 + br $for-loop|021 end end i32.const 0 end i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4528 - i32.store offset=4 - i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.065 (result i32) - local.get $4 + br_if $folding-inner23 + block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4528 + i32.store offset=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 1 i32.shr_u - local.set $1 - loop $for-loop|066 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|0422 + local.get $2 + local.get $13 i32.gt_s if - local.get $6 + local.get $13 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s local.set $0 @@ -52724,27 +51469,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 + local.get $13 local.get $6 - 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 $13 i32.const 1 i32.add - local.set $6 - br $for-loop|066 + local.set $13 + br $for-loop|0422 end end i32.const 0 end - br_if $folding-inner7 + 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 @@ -52752,99 +51501,95 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|068 - local.get $1 - local.get $6 - i32.gt_s + local.set $3 + loop $for-loop|02328 + local.get $0 + local.get $3 + i32.lt_s if - local.get $6 + local.get $0 i32.const 1 i32.shl - local.get $2 + 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 $6 - 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 $0 i32.const 1 i32.add - local.set $6 - br $for-loop|068 + local.set $0 + br $for-loop|02328 end end i32.const 0 end i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4592 - i32.store offset=4 - i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.070 (result i32) - local.get $4 + br_if $folding-inner23 + block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4592 + i32.store offset=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 1 i32.shr_u - local.set $1 - loop $for-loop|071 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|0424 + local.get $2 + local.get $13 i32.gt_s if - local.get $6 + local.get $13 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u local.set $0 @@ -52852,27 +51597,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 + local.get $13 local.get $6 - 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 $13 i32.const 1 i32.add - local.set $6 - br $for-loop|071 + local.set $13 + br $for-loop|0424 end end i32.const 0 end - br_if $folding-inner7 + 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 @@ -52880,99 +51629,95 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|073 - local.get $1 - local.get $6 - i32.gt_s + i32.shr_u + local.set $3 + loop $for-loop|02529 + local.get $0 + local.get $3 + i32.lt_s if - local.get $6 + local.get $0 i32.const 2 i32.shl - local.get $2 + 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 $6 - 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 $0 i32.const 1 i32.add - local.set $6 - br $for-loop|073 + local.set $0 + br $for-loop|02529 end end i32.const 0 end i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store offset=4 - i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.075 (result i32) - local.get $4 + br_if $folding-inner23 + block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store offset=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 $1 - loop $for-loop|076 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|0426 + local.get $2 + local.get $13 i32.gt_s if - local.get $6 + local.get $13 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -52980,27 +51725,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 + local.get $13 local.get $6 - 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 $13 i32.const 1 i32.add - local.set $6 - br $for-loop|076 + local.set $13 + br $for-loop|0426 end end i32.const 0 end - br_if $folding-inner7 + 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 @@ -53008,99 +51757,95 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|078 - local.get $1 - local.get $6 - i32.gt_s + local.set $3 + loop $for-loop|028 + local.get $0 + local.get $3 + i32.lt_s if - local.get $6 + local.get $0 i32.const 2 i32.shl - local.get $2 + 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 $6 - 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 $0 i32.const 1 i32.add - local.set $6 - br $for-loop|078 + local.set $0 + br $for-loop|028 end end i32.const 0 end i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4720 - i32.store offset=4 - i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.080 (result i32) - local.get $4 + br_if $folding-inner23 + block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4720 + i32.store offset=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 $1 - loop $for-loop|081 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|0429 + local.get $2 + local.get $13 i32.gt_s if - local.get $6 + local.get $13 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -53108,27 +51853,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 + local.get $13 local.get $6 - 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 $13 i32.const 1 i32.add - local.set $6 - br $for-loop|081 + local.set $13 + br $for-loop|0429 end end i32.const 0 end - br_if $folding-inner7 + 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 @@ -53136,127 +51885,127 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $5 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 $1 - 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|083 + local.set $2 + loop $for-loop|030 local.get $0 - local.get $5 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $3 i32.add i64.load - local.set $9 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $9 - local.get $5 - 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 $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|083 + local.set $0 + br $for-loop|030 end end i32.const 0 end i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4784 - i32.store offset=4 - i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.085 (result i32) - local.get $3 + br_if $folding-inner23 + block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4784 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $1 - local.get $3 + local.set $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|086 + loop $for-loop|0431 local.get $0 - local.get $5 + local.get $13 i32.gt_s if - local.get $5 + local.get $13 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $9 - local.get $5 - 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.085 + br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.01 drop - local.get $5 + local.get $13 i32.const 1 i32.add - local.set $5 - br $for-loop|086 + local.set $13 + br $for-loop|0431 end end i32.const 0 end - br_if $folding-inner7 + 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 @@ -53264,127 +52013,127 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $5 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 $1 - 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|088 + local.set $2 + loop $for-loop|033 local.get $0 - local.get $5 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $3 i32.add i64.load - local.set $9 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $9 - local.get $5 - 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 $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|088 + local.set $0 + br $for-loop|033 end end i32.const 0 end i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4848 - i32.store offset=4 - i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.090 (result i32) - local.get $3 + br_if $folding-inner23 + block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4848 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $1 - local.get $3 + local.set $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|091 + loop $for-loop|0434 local.get $0 - local.get $5 + local.get $13 i32.gt_s if - local.get $5 + local.get $13 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $9 - local.get $5 - 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.090 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.01 drop - local.get $5 + local.get $13 i32.const 1 i32.add - local.set $5 - br $for-loop|091 + local.set $13 + br $for-loop|0434 end end i32.const 0 end - br_if $folding-inner7 + 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 @@ -53392,127 +52141,127 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $5 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 $1 - 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|093 + local.set $2 + loop $for-loop|035 local.get $0 - local.get $5 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $3 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 $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 $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|093 + local.set $0 + br $for-loop|035 end end i32.const 0 end i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4912 - i32.store offset=4 - i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.095 (result i32) - local.get $3 + br_if $folding-inner23 + block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4912 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $1 - local.get $3 + local.set $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|096 + loop $for-loop|0436 local.get $0 - local.get $5 + local.get $13 i32.gt_s if - local.get $5 + local.get $13 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 $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.095 + br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.01 drop - local.get $5 + local.get $13 i32.const 1 i32.add - local.set $5 - br $for-loop|096 + local.set $13 + br $for-loop|0436 end end i32.const 0 end - br_if $folding-inner7 + 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 @@ -53520,127 +52269,127 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $5 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 $1 - 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|098 + local.set $2 + loop $for-loop|038 local.get $0 - local.get $5 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $3 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 $3 + local.get $7 + 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 $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|098 + local.set $0 + br $for-loop|038 end end i32.const 0 end i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4976 - i32.store offset=4 - i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0100 (result i32) - local.get $3 + br_if $folding-inner23 + block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $1 - local.get $3 + local.set $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0101 + loop $for-loop|0439 local.get $0 - local.get $5 + local.get $13 i32.gt_s if - local.get $5 + local.get $13 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 $3 + local.get $7 + 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.0100 + br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.01 drop - local.get $5 + local.get $13 i32.const 1 i32.add - local.set $5 - br $for-loop|0101 + local.set $13 + br $for-loop|0439 end end i32.const 0 end - br_if $folding-inner7 + 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 @@ -53648,118 +52397,118 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 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 - i32.const 0 - local.set $1 - 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|0103 - local.get $1 - local.get $2 + loop $for-loop|040 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $4 + local.get $0 + local.get $6 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|040 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-inner25 global.get $~lib/memory/__stack_pointer i32.const 5040 i32.store offset=4 - i32.const 0 - local.set $1 - 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.0105 - loop $for-loop|0106 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 + loop $for-loop|0441 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 i32.const 3 global.set $~argumentsLength - local.get $1 - 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.0105 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0106 + local.set $13 + br $for-loop|0441 end end i32.const -1 - local.set $1 + local.set $13 end - local.get $1 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner9 + 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 @@ -53767,118 +52516,118 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 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 - i32.const 0 - local.set $1 - 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|0108 - local.get $1 - local.get $2 + loop $for-loop|043 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $4 + local.get $0 + local.get $6 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|043 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-inner25 global.get $~lib/memory/__stack_pointer i32.const 5104 i32.store offset=4 - i32.const 0 - local.set $1 - 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.0110 - loop $for-loop|0111 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 + loop $for-loop|0444 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 i32.const 3 global.set $~argumentsLength - local.get $1 - 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.0110 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0111 + local.set $13 + br $for-loop|0444 end end i32.const -1 - local.set $1 + local.set $13 end - local.get $1 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner9 + 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 @@ -53886,118 +52635,118 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 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 - i32.const 0 - local.set $1 - 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.0114 - loop $for-loop|0115 - local.get $1 - local.get $2 + local.set $3 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.045 + loop $for-loop|046 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $4 + local.get $0 + 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.0114 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.045 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0115 + local.set $0 + br $for-loop|046 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-inner25 global.get $~lib/memory/__stack_pointer i32.const 5168 i32.store offset=4 - i32.const 0 - local.set $1 - 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.0117 - loop $for-loop|0118 - local.get $1 + 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 $1 local.get $3 + local.get $13 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 - 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.0117 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0147 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0118 + local.set $13 + br $for-loop|0448 end end i32.const -1 - local.set $1 + local.set $13 end - local.get $1 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner9 + 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 @@ -54005,95 +52754,91 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 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 - i32.const 0 - local.set $1 - 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|0120 - local.get $1 - local.get $2 + loop $for-loop|049 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $4 + local.get $0 + local.get $6 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|049 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-inner25 global.get $~lib/memory/__stack_pointer i32.const 5232 i32.store offset=4 - i32.const 0 - local.set $1 - 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.0122 - loop $for-loop|0123 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 + loop $for-loop|0450 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 @@ -54101,30 +52846,34 @@ i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $1 - 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.0122 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0123 + local.set $13 + br $for-loop|0450 end end i32.const -1 - local.set $1 + local.set $13 end - local.get $1 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner9 + 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 @@ -54132,95 +52881,91 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 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 - i32.const 0 - local.set $1 - 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|0125 - local.get $1 - local.get $2 + loop $for-loop|051 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $4 + local.get $0 + local.get $6 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|051 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-inner25 global.get $~lib/memory/__stack_pointer i32.const 5296 i32.store offset=4 - i32.const 0 - local.set $1 - 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.0127 - loop $for-loop|0128 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 + loop $for-loop|0452 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 @@ -54228,30 +52973,34 @@ i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $1 - 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.0127 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0128 + local.set $13 + br $for-loop|0452 end end i32.const -1 - local.set $1 + local.set $13 end - local.get $1 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner9 + 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 @@ -54259,95 +53008,91 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 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 - i32.const 0 - local.set $1 - 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|0130 - local.get $1 - local.get $2 + loop $for-loop|053 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $4 + local.get $0 + local.get $6 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|053 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-inner25 global.get $~lib/memory/__stack_pointer i32.const 5360 i32.store offset=4 - i32.const 0 - local.set $1 - 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.0132 - loop $for-loop|0133 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 + loop $for-loop|0454 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 @@ -54355,30 +53100,34 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 - 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.0132 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0133 + local.set $13 + br $for-loop|0454 end end i32.const -1 - local.set $1 + local.set $13 end - local.get $1 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner9 + 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 @@ -54386,95 +53135,91 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 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 - i32.const 0 - local.set $1 - 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|0135 - local.get $1 - local.get $2 + loop $for-loop|055 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $4 + local.get $0 + local.get $6 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|055 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-inner25 global.get $~lib/memory/__stack_pointer i32.const 5424 i32.store offset=4 - i32.const 0 - local.set $1 - 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.0137 - loop $for-loop|0138 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 + loop $for-loop|0456 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 @@ -54482,30 +53227,34 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 - 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.0137 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0138 + local.set $13 + br $for-loop|0456 end end i32.const -1 - local.set $1 + local.set $13 end - local.get $1 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner9 + 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 @@ -54513,95 +53262,91 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 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 - i32.const 0 - local.set $1 - 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 $0 + local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $for-loop|0140 + loop $for-loop|057 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.const 5456 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0140 + local.set $0 + br $for-loop|057 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-inner25 global.get $~lib/memory/__stack_pointer i32.const 5488 i32.store offset=4 - i32.const 0 - local.set $1 - 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 $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0142 - loop $for-loop|0143 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 + loop $for-loop|0458 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 @@ -54609,30 +53354,34 @@ i64.load i32.const 3 global.set $~argumentsLength - local.get $1 - 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.0142 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0143 + local.set $13 + br $for-loop|0458 end end i32.const -1 - local.set $1 + local.set $13 end - local.get $1 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner9 + 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 @@ -54640,95 +53389,91 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 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 - i32.const 0 - local.set $1 - 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 $0 + local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - loop $for-loop|0145 + loop $for-loop|060 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.const 5520 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0145 + local.set $0 + br $for-loop|060 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-inner25 global.get $~lib/memory/__stack_pointer i32.const 5552 i32.store offset=4 - i32.const 0 - local.set $1 - 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 $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0147 - loop $for-loop|0148 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 + loop $for-loop|0461 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 @@ -54736,30 +53481,34 @@ i64.load i32.const 3 global.set $~argumentsLength - local.get $1 - 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.0147 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0148 + local.set $13 + br $for-loop|0461 end end i32.const -1 - local.set $1 + local.set $13 end - local.get $1 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner9 + 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 @@ -54767,95 +53516,91 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 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 - i32.const 0 - local.set $1 - 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 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $for-loop|0150 + loop $for-loop|062 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.const 5584 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0150 + 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-inner25 global.get $~lib/memory/__stack_pointer i32.const 5616 i32.store offset=4 - i32.const 0 - local.set $1 - 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 $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0152 - loop $for-loop|0153 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 + loop $for-loop|0463 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 @@ -54863,30 +53608,34 @@ f32.load i32.const 3 global.set $~argumentsLength - local.get $1 - 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.0152 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0153 + local.set $13 + br $for-loop|0463 end end i32.const -1 - local.set $1 + local.set $13 end - local.get $1 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner9 + 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 @@ -54894,95 +53643,91 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 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 - i32.const 0 - local.set $1 - 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 $0 + local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $for-loop|0155 + loop $for-loop|065 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.const 5648 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0155 + 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-inner25 global.get $~lib/memory/__stack_pointer i32.const 5680 i32.store offset=4 - i32.const 0 - local.set $1 - 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 $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0157 - loop $for-loop|0158 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 + loop $for-loop|0466 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 @@ -54990,26 +53735,26 @@ f64.load i32.const 3 global.set $~argumentsLength - local.get $1 - 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.0157 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0158 + local.set $13 + br $for-loop|0466 end end i32.const -1 - local.set $1 + local.set $13 end - local.get $1 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55021,7 +53766,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55029,106 +53774,106 @@ 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 $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|067 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + local.get $4 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|067 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-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 $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|0468 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + local.get $4 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|0468 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-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55140,7 +53885,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55148,106 +53893,106 @@ 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 $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|069 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + local.get $4 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|069 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-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 $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|0470 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + local.get $4 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|0470 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-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55259,7 +54004,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55267,106 +54012,106 @@ 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 $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.071 + loop $for-loop|072 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + 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.0171 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.071 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0172 + local.set $0 + br $for-loop|072 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-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 $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.0173 + loop $for-loop|0474 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + 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.0174 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0173 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0175 + local.set $0 + br $for-loop|0474 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-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55378,7 +54123,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55386,114 +54131,114 @@ 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 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|075 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + 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 $1 - local.get $3 + local.get $0 + local.get $4 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|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-inner10 + 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 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|0476 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + 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 $1 - local.get $3 + local.get $0 + local.get $4 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|0476 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-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55505,7 +54250,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55513,114 +54258,114 @@ 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 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|077 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + 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 $1 - local.get $3 + local.get $0 + local.get $4 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|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-inner10 + 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 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|0478 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + 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 $1 - local.get $3 + local.get $0 + local.get $4 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|0478 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-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55632,7 +54377,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55640,114 +54385,114 @@ 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 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|079 + 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 $3 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + local.get $4 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|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-inner10 + 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 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|0480 + 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 $3 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + local.get $4 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|0480 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-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55759,7 +54504,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55767,114 +54512,114 @@ 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 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|082 + 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 $3 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + local.get $4 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|082 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-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 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|0483 + 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 $3 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $3 + local.get $0 + local.get $4 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|0483 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-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55886,7 +54631,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55894,114 +54639,114 @@ 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 $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 + 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|084 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $2 + local.get $0 + local.get $3 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|084 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-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 $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 - 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|0485 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $2 + local.get $0 + local.get $3 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|0485 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-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -56013,7 +54758,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56021,114 +54766,114 @@ 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 $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 + 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|087 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $2 + local.get $0 + local.get $3 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|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-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 $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 - 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|0488 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $2 + local.get $0 + local.get $3 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|0488 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-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -56140,7 +54885,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56148,114 +54893,114 @@ 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 $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 + 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|089 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $2 + local.get $0 + local.get $3 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|089 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-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 $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 - 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|0490 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $2 + local.get $0 + local.get $3 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|0490 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-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -56267,7 +55012,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56275,118 +55020,122 @@ 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 $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 + 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|092 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $2 + local.get $0 + local.get $3 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|092 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-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 $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 - 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|0493 + 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 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $2 + local.get $0 + local.get $3 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|0493 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-inner28 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 @@ -56394,92 +55143,88 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $1 - loop $for-loop|0217 - local.get $1 - local.get $6 - i32.gt_s + local.set $3 + loop $for-loop|094 + local.get $0 + local.get $3 + i32.lt_s if - local.get $2 - local.get $6 + 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 $6 - local.get $4 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 $6 + local.get $0 i32.const 1 i32.add - local.set $6 - br $for-loop|0217 + local.set $0 + br $for-loop|094 end end i32.const 1 end i32.eqz - br_if $folding-inner12 - 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.get $4 + br_if $folding-inner29 + block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $2 - local.get $4 + local.set $3 + local.get $6 i32.load offset=8 - local.set $1 - loop $for-loop|0220 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|0495 + local.get $2 + local.get $13 i32.gt_s if - local.get $2 - local.get $6 + local.get $3 + local.get $13 i32.add i32.load8_s local.set $0 @@ -56487,28 +55232,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 + local.get $13 local.get $6 - 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 $13 i32.const 1 i32.add - local.set $6 - br $for-loop|0220 + local.set $13 + br $for-loop|0495 end end i32.const 1 end - br_if $folding-inner13 + 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 $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56516,92 +55265,88 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $1 - loop $for-loop|0222 - local.get $1 - local.get $6 - i32.gt_s + local.set $3 + loop $for-loop|097 + local.get $0 + local.get $3 + i32.lt_s if - local.get $2 - local.get $6 + 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 $6 - local.get $4 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 $6 + local.get $0 i32.const 1 i32.add - local.set $6 - br $for-loop|0222 + local.set $0 + br $for-loop|097 end end i32.const 1 end i32.eqz - br_if $folding-inner12 - 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.get $4 + br_if $folding-inner29 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 6512 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $2 - local.get $4 + local.set $3 + local.get $6 i32.load offset=8 - local.set $1 - loop $for-loop|0225 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|0498 + local.get $2 + local.get $13 i32.gt_s if - local.get $2 - local.get $6 + local.get $3 + local.get $13 i32.add i32.load8_u local.set $0 @@ -56609,28 +55354,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 + local.get $13 local.get $6 - 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 $13 i32.const 1 i32.add - local.set $6 - br $for-loop|0225 + local.set $13 + br $for-loop|0498 end end i32.const 1 end - br_if $folding-inner13 + 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 $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56638,92 +55387,88 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0228 (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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $1 - loop $for-loop|0229 - local.get $1 - local.get $6 - i32.gt_s + local.set $3 + loop $for-loop|0100 + local.get $0 + local.get $3 + i32.lt_s if - local.get $2 - local.get $6 + 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 $6 - 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.099 drop - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 - br $for-loop|0229 + local.set $0 + br $for-loop|0100 end end i32.const 1 end i32.eqz - br_if $folding-inner12 - 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.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 $2 - local.get $4 + local.set $3 + local.get $6 i32.load offset=8 - local.set $1 - loop $for-loop|0232 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|04102 + local.get $2 + local.get $13 i32.gt_s if - local.get $2 - local.get $6 + local.get $3 + local.get $13 i32.add i32.load8_u local.set $0 @@ -56731,28 +55476,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 + local.get $13 local.get $6 - 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.01101 drop - local.get $6 + local.get $13 i32.const 1 i32.add - local.set $6 - br $for-loop|0232 + local.set $13 + br $for-loop|04102 end end i32.const 1 end - br_if $folding-inner13 + 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 $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56760,100 +55509,96 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|0234 - local.get $1 - local.get $6 - i32.gt_s + local.set $3 + loop $for-loop|0103 + local.get $0 + local.get $3 + i32.lt_s if - local.get $6 + local.get $0 i32.const 1 i32.shl - local.get $2 + 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 $6 - local.get $4 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 $6 + local.get $0 i32.const 1 i32.add - local.set $6 - br $for-loop|0234 + local.set $0 + br $for-loop|0103 end end i32.const 1 end i32.eqz - br_if $folding-inner12 - 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.get $4 + br_if $folding-inner29 + block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 6640 + i32.store offset=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 1 i32.shr_u - local.set $1 - loop $for-loop|0237 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|04104 + local.get $2 + local.get $13 i32.gt_s if - local.get $6 + local.get $13 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s local.set $0 @@ -56861,28 +55606,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 + local.get $13 local.get $6 - 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 $13 i32.const 1 i32.add - local.set $6 - br $for-loop|0237 + local.set $13 + br $for-loop|04104 end end i32.const 1 end - br_if $folding-inner13 + 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 $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56890,100 +55639,96 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|0239 - local.get $1 - local.get $6 - i32.gt_s + local.set $3 + loop $for-loop|0105 + local.get $0 + local.get $3 + i32.lt_s if - local.get $6 + local.get $0 i32.const 1 i32.shl - local.get $2 + 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 $6 - local.get $4 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 $6 + local.get $0 i32.const 1 i32.add - local.set $6 - br $for-loop|0239 + local.set $0 + br $for-loop|0105 end end i32.const 1 end i32.eqz - br_if $folding-inner12 - 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.get $4 + br_if $folding-inner29 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 6704 + i32.store offset=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 1 i32.shr_u - local.set $1 - loop $for-loop|0242 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|04106 + local.get $2 + local.get $13 i32.gt_s if - local.get $6 + local.get $13 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u local.set $0 @@ -56991,28 +55736,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 + local.get $13 local.get $6 - 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 $13 i32.const 1 i32.add - local.set $6 - br $for-loop|0242 + local.set $13 + br $for-loop|04106 end end i32.const 1 end - br_if $folding-inner13 + 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 $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57020,100 +55769,96 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|0244 - local.get $1 - local.get $6 - i32.gt_s + local.set $3 + loop $for-loop|0107 + local.get $0 + local.get $3 + i32.lt_s if - local.get $6 + local.get $0 i32.const 2 i32.shl - local.get $2 + 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 $6 - local.get $4 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 $6 + local.get $0 i32.const 1 i32.add - local.set $6 - br $for-loop|0244 + local.set $0 + br $for-loop|0107 end end i32.const 1 end i32.eqz - br_if $folding-inner12 - 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.get $4 + br_if $folding-inner29 + block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 6768 + i32.store offset=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 $1 - loop $for-loop|0247 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|04108 + local.get $2 + local.get $13 i32.gt_s if - local.get $6 + local.get $13 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -57121,28 +55866,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 + local.get $13 local.get $6 - 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 $13 i32.const 1 i32.add - local.set $6 - br $for-loop|0247 + local.set $13 + br $for-loop|04108 end end i32.const 1 end - br_if $folding-inner13 + 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 $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57150,100 +55899,96 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $6 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 $2 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|0249 - local.get $1 - local.get $6 - i32.gt_s + local.set $3 + loop $for-loop|0109 + local.get $0 + local.get $3 + i32.lt_s if - local.get $6 + local.get $0 i32.const 2 i32.shl - local.get $2 + 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 $6 - local.get $4 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 $6 + local.get $0 i32.const 1 i32.add - local.set $6 - br $for-loop|0249 + local.set $0 + br $for-loop|0109 end end i32.const 1 end i32.eqz - br_if $folding-inner12 - 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.get $4 + br_if $folding-inner29 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 6832 + i32.store offset=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 $1 - loop $for-loop|0252 - local.get $1 - local.get $6 + local.set $2 + loop $for-loop|04110 + local.get $2 + local.get $13 i32.gt_s if - local.get $6 + local.get $13 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -57251,28 +55996,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 + local.get $13 local.get $6 - 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 $13 i32.const 1 i32.add - local.set $6 - br $for-loop|0252 + local.set $13 + br $for-loop|04110 end end i32.const 1 end - br_if $folding-inner13 + 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 $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57280,129 +56029,129 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $5 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 $1 - 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|0254 + local.set $2 + loop $for-loop|0112 local.get $0 - local.get $5 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $3 i32.add i64.load - local.set $9 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $9 - local.get $5 - 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 $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|0254 + local.set $0 + br $for-loop|0112 end end i32.const 1 end i32.eqz - br_if $folding-inner12 - 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.get $3 + br_if $folding-inner29 + block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 6896 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $1 - local.get $3 + local.set $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0257 + loop $for-loop|04113 local.get $0 - local.get $5 + local.get $13 i32.gt_s if - local.get $5 + local.get $13 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $9 - local.get $5 - 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.0256 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.01 drop - local.get $5 + local.get $13 i32.const 1 i32.add - local.set $5 - br $for-loop|0257 + local.set $13 + br $for-loop|04113 end end i32.const 1 end - br_if $folding-inner13 + 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 $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57410,129 +56159,129 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $5 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 $1 - 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|0259 + local.set $2 + loop $for-loop|0114 local.get $0 - local.get $5 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $3 i32.add i64.load - local.set $9 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $9 - local.get $5 - 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 $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|0259 + local.set $0 + br $for-loop|0114 end end i32.const 1 end i32.eqz - br_if $folding-inner12 - 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.get $3 + br_if $folding-inner29 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 6960 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $1 - local.get $3 + local.set $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0262 + loop $for-loop|04115 local.get $0 - local.get $5 + local.get $13 i32.gt_s if - local.get $5 + local.get $13 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $9 - local.get $5 - 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.0261 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.01 drop - local.get $5 + local.get $13 i32.const 1 i32.add - local.set $5 - br $for-loop|0262 + local.set $13 + br $for-loop|04115 end end i32.const 1 end - br_if $folding-inner13 + 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 $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57540,129 +56289,129 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $5 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 $1 - 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|0264 + local.set $2 + loop $for-loop|0116 local.get $0 - local.get $5 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $3 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 $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 $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|0264 + local.set $0 + br $for-loop|0116 end end i32.const 1 end i32.eqz - br_if $folding-inner12 - 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.get $3 + br_if $folding-inner29 + block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $1 - local.get $3 + local.set $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0267 + loop $for-loop|04117 local.get $0 - local.get $5 + local.get $13 i32.gt_s if - local.get $5 + local.get $13 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 $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.0266 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.01 drop - local.get $5 + local.get $13 i32.const 1 i32.add - local.set $5 - br $for-loop|0267 + local.set $13 + br $for-loop|04117 end end i32.const 1 end - br_if $folding-inner13 + 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 $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57670,125 +56419,121 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 - i32.const 0 - local.set $5 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 $1 - 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|0269 + local.set $2 + loop $for-loop|0118 local.get $0 - local.get $5 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $3 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 $3 + local.get $7 + 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 $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|0269 + local.set $0 + br $for-loop|0118 end end i32.const 1 end i32.eqz - br_if $folding-inner12 - 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.get $3 + br_if $folding-inner29 + block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.01 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 7088 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $1 - local.get $3 + local.set $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0272 + loop $for-loop|04119 local.get $0 - local.get $5 + local.get $13 i32.gt_s if - local.get $5 + local.get $13 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 $3 + local.get $7 + 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.0271 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.01 drop - local.get $5 + local.get $13 i32.const 1 i32.add - local.set $5 - br $for-loop|0272 + local.set $13 + br $for-loop|04119 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner30 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -57800,7 +56545,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57813,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 @@ -57830,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 @@ -57840,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 @@ -57850,41 +56595,39 @@ global.get $~lib/memory/__stack_pointer i32.const 7200 i32.store offset=8 - i32.const 0 - local.set $5 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 + local.get $4 + i32.load offset=4 + local.set $3 + local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|054274 - local.get $1 - local.get $5 + local.set $2 + loop $for-loop|0116120 + local.get $2 + local.get $37 i32.gt_s if - local.get $2 - local.get $5 + local.get $3 + local.get $37 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $3 + local.get $37 + local.get $4 i32.const 7200 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + local.get $37 i32.const 1 i32.add - local.set $5 - br $for-loop|054274 + local.set $37 + br $for-loop|0116120 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -57896,7 +56639,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57909,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 @@ -57927,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 @@ -57938,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 @@ -57949,41 +56692,39 @@ global.get $~lib/memory/__stack_pointer i32.const 7232 i32.store offset=8 - i32.const 0 - local.set $5 - 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|056 - local.get $1 - local.get $5 + local.set $2 + loop $for-loop|0121 + local.get $2 + local.get $38 i32.gt_s if - local.get $2 - local.get $5 + local.get $3 + local.get $38 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $3 + local.get $38 + local.get $4 i32.const 7232 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + local.get $38 i32.const 1 i32.add - local.set $5 - br $for-loop|056 + local.set $38 + br $for-loop|0121 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -57995,7 +56736,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58008,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 @@ -58026,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 @@ -58037,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 @@ -58048,41 +56789,39 @@ global.get $~lib/memory/__stack_pointer i32.const 7264 i32.store offset=8 - i32.const 0 - local.set $5 - 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|059 - local.get $1 - local.get $5 + local.set $2 + loop $for-loop|0128 + local.get $2 + local.get $39 i32.gt_s if - local.get $2 - local.get $5 + local.get $3 + local.get $39 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $3 + local.get $39 + local.get $4 i32.const 7264 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + local.get $39 i32.const 1 i32.add - local.set $5 - br $for-loop|059 + local.set $39 + br $for-loop|0128 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58094,7 +56833,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58107,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 @@ -58124,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 @@ -58134,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 @@ -58144,45 +56883,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7296 i32.store offset=8 - i32.const 0 - local.set $5 - 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|061278 - local.get $1 - local.get $5 + local.set $2 + loop $for-loop|0133 + local.get $2 + local.get $40 i32.gt_s if - local.get $5 + 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 $5 - local.get $3 + local.get $40 + local.get $4 i32.const 7296 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + local.get $40 i32.const 1 i32.add - local.set $5 - br $for-loop|061278 + local.set $40 + br $for-loop|0133 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58194,7 +56931,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58207,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 @@ -58225,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 @@ -58236,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 @@ -58247,45 +56984,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7328 i32.store offset=8 - i32.const 0 - local.set $5 - 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|063280 - local.get $1 - local.get $5 + local.set $2 + loop $for-loop|0138 + local.get $2 + local.get $41 i32.gt_s if - local.get $5 + 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 $5 - local.get $3 + local.get $41 + local.get $4 i32.const 7328 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + local.get $41 i32.const 1 i32.add - local.set $5 - br $for-loop|063280 + local.set $41 + br $for-loop|0138 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58297,7 +57032,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58310,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 @@ -58326,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 @@ -58335,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 @@ -58344,45 +57079,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7360 i32.store offset=8 - i32.const 0 - local.set $5 - 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|065 - local.get $1 - local.get $5 + local.set $2 + loop $for-loop|0143 + local.get $2 + local.get $42 i32.gt_s if - local.get $5 + 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 $5 - local.get $3 + local.get $42 + local.get $4 i32.const 7360 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + local.get $42 i32.const 1 i32.add - local.set $5 - br $for-loop|065 + local.set $42 + br $for-loop|0143 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58394,7 +57127,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58407,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 @@ -58423,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 @@ -58432,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 @@ -58441,45 +57174,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7392 i32.store offset=8 - i32.const 0 - local.set $5 - 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|067 - local.get $1 - local.get $5 + local.set $2 + loop $for-loop|0148 + local.get $2 + local.get $43 i32.gt_s if - local.get $5 + 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 $5 - local.get $3 + local.get $43 + local.get $4 i32.const 7392 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + local.get $43 i32.const 1 i32.add - local.set $5 - br $for-loop|067 + local.set $43 + br $for-loop|0148 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58491,7 +57222,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58504,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 @@ -58521,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 @@ -58531,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 @@ -58541,45 +57272,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7424 i32.store offset=8 - i32.const 0 - local.set $5 - 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|069 + loop $for-loop|0153 local.get $0 - local.get $5 + local.get $44 i32.gt_s if - local.get $5 + 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 $5 - local.get $2 + local.get $44 + local.get $3 i32.const 7424 i32.load call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $5 + local.get $44 i32.const 1 i32.add - local.set $5 - br $for-loop|069 + local.set $44 + br $for-loop|0153 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58591,7 +57320,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58604,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 @@ -58621,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 @@ -58631,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 @@ -58641,45 +57370,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7456 i32.store offset=8 - i32.const 0 - local.set $5 - 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|071285 + loop $for-loop|0158 local.get $0 - local.get $5 + local.get $45 i32.gt_s if - local.get $5 + 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 $5 - local.get $2 + local.get $45 + local.get $3 i32.const 7456 i32.load call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $5 + local.get $45 i32.const 1 i32.add - local.set $5 - br $for-loop|071285 + local.set $45 + br $for-loop|0158 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58691,7 +57418,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58704,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 @@ -58721,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 @@ -58731,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 @@ -58741,45 +57468,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7488 i32.store offset=8 - i32.const 0 - local.set $5 - 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|073287 + loop $for-loop|0163 local.get $0 - local.get $5 + local.get $46 i32.gt_s if - local.get $5 + 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 $5 - local.get $2 + local.get $46 + local.get $3 i32.const 7488 i32.load call_indirect $0 (type $f32_i32_i32_=>_none) - local.get $5 + local.get $46 i32.const 1 i32.add - local.set $5 - br $for-loop|073287 + local.set $46 + br $for-loop|0163 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58791,7 +57516,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58804,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 @@ -58821,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 @@ -58831,61 +57556,335 @@ 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 + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7520 + i32.store offset=8 + 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|0168 + local.get $0 + local.get $47 + i32.gt_s + if + local.get $47 + i32.const 3 + i32.shl + local.get $2 + i32.add + f64.load + i32.const 3 + global.set $~argumentsLength + local.get $47 + local.get $3 + i32.const 7520 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_none) + local.get $47 + i32.const 1 + i32.add + local.set $47 + br $for-loop|0168 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner22 + 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 7616 + i32.store + local.get $2 + i32.const 7628 + i32.load + local.tee $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + i32.store offset=8 + loop $for-loop|0122 + 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.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0122 + 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 $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $0 + call $~lib/typedarray/Int8Array#__get + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.extend8_s + i32.ne + br_if $folding-inner31 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 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 + 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/Int8Array#__get + i32.const 8 + i32.ne + br_if $folding-inner32 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 7 + i32.ne + br_if $folding-inner33 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 6 + i32.ne + br_if $folding-inner34 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#__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 $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 + br_if $folding-inner22 + 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 7616 + i32.store 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 + i32.const 7628 + i32.load + local.tee $4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7520 + local.get $4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 i32.store offset=8 - i32.const 0 - local.set $5 + loop $for-loop|0123 + 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/Uint8Array#__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/Uint8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0123 + end + end local.get $2 i32.load offset=4 - local.set $1 local.get $2 i32.load offset=8 - i32.const 3 - i32.shr_u + call $~lib/util/bytes/REVERSE + i32.const 0 local.set $0 - loop $for-loop|075 + loop $for-loop|1124 local.get $0 - local.get $5 - i32.gt_s + local.get $4 + i32.lt_s if - local.get $5 - i32.const 3 - i32.shl - 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 + local.get $0 + call $~lib/typedarray/Uint8Array#__get + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + br_if $folding-inner31 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|075 + local.set $0 + br $for-loop|1124 end end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 8 + call $~lib/typedarray/Uint8Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + 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/Uint8Array#__get + i32.const 8 + i32.ne + br_if $folding-inner32 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 7 + i32.ne + br_if $folding-inner33 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 6 + i32.ne + br_if $folding-inner34 + local.get $0 i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 i32.ne - br_if $folding-inner14 + br_if $folding-inner35 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 $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -58893,131 +57892,138 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 $4 + call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $2 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 + local.get $4 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 i32.store offset=8 - loop $for-loop|028 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|0125 + local.get $0 + local.get $4 + i32.lt_s if + local.get $2 local.get $0 - local.get $3 i32.const 7616 - local.get $3 + local.get $0 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $1 + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set local.get $3 + local.get $0 i32.const 7616 - local.get $3 + local.get $0 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $3 + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 i32.const 1 i32.add - local.set $3 - br $for-loop|028 + local.set $0 + br $for-loop|0125 end end - local.get $0 - call $~lib/typedarray/Int8Array#reverse - drop + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 + call $~lib/util/bytes/REVERSE i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.gt_s + local.set $0 + loop $for-loop|1126 + local.get $0 + local.get $4 + i32.lt_s if + local.get $2 local.get $0 - local.get $3 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 7616 - local.get $2 + local.get $4 i32.const 1 i32.sub - local.get $3 + local.get $0 i32.sub call $~lib/array/Array#__get - i32.extend8_s + i32.const 255 + i32.and i32.ne - br_if $folding-inner24 - local.get $3 + br_if $folding-inner31 + local.get $0 i32.const 1 i32.add - local.set $3 - br $for-loop|1 + local.set $0 + br $for-loop|1126 end end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 4 + local.get $3 i32.const 8 - call $~lib/typedarray/Int8Array#subarray - local.set $1 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int8Array#reverse - local.tee $0 + local.get $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/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 8 i32.ne - br_if $folding-inner25 + br_if $folding-inner32 local.get $0 i32.const 1 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 7 i32.ne - br_if $folding-inner26 + br_if $folding-inner33 local.get $0 i32.const 2 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 6 i32.ne - br_if $folding-inner27 + br_if $folding-inner34 local.get $0 i32.const 3 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 5 i32.ne - br_if $folding-inner28 + 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 $3 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59025,133 +58031,130 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 $4 + call $~lib/typedarray/Int16Array#constructor local.tee $2 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 + local.get $4 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 i32.store offset=8 - loop $for-loop|030 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|0127 + local.get $0 + local.get $4 + i32.lt_s if + local.get $2 local.get $0 - local.get $3 i32.const 7616 - local.get $3 + local.get $0 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 + i32.extend16_s + call $~lib/typedarray/Int16Array#__set local.get $3 + local.get $0 i32.const 7616 - local.get $3 + local.get $0 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $3 + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $0 i32.const 1 i32.add - local.set $3 - br $for-loop|030 + local.set $0 + br $for-loop|0127 end end - local.get $0 - call $~lib/typedarray/Int8Array#reverse + local.get $2 + call $~lib/typedarray/Int16Array#reverse drop i32.const 0 - local.set $3 - loop $for-loop|131 - local.get $2 - local.get $3 - i32.gt_s + local.set $0 + loop $for-loop|1128 + local.get $0 + local.get $4 + i32.lt_s if + local.get $2 local.get $0 - local.get $3 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int16Array#__get i32.const 7616 - local.get $2 + local.get $4 i32.const 1 i32.sub - local.get $3 + local.get $0 i32.sub call $~lib/array/Array#__get - i32.const 255 - i32.and + i32.extend16_s i32.ne - br_if $folding-inner24 - local.get $3 + br_if $folding-inner31 + local.get $0 i32.const 1 i32.add - local.set $3 - br $for-loop|131 + local.set $0 + br $for-loop|1128 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 8 - call $~lib/typedarray/Uint8Array#subarray - local.set $1 + call $~lib/typedarray/Int16Array#subarray + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int8Array#reverse + local.get $0 + call $~lib/typedarray/Int16Array#reverse local.tee $0 i32.store offset=16 local.get $0 i32.const 0 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int16Array#__get i32.const 8 i32.ne - br_if $folding-inner25 + br_if $folding-inner32 local.get $0 i32.const 1 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int16Array#__get i32.const 7 i32.ne - br_if $folding-inner26 + br_if $folding-inner33 local.get $0 i32.const 2 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int16Array#__get i32.const 6 i32.ne - br_if $folding-inner27 + br_if $folding-inner34 local.get $0 i32.const 3 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int16Array#__get i32.const 5 i32.ne - br_if $folding-inner28 + 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 $3 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59159,133 +58162,131 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + 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 $4 + call $~lib/typedarray/Uint16Array#constructor local.tee $2 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 + local.get $4 + call $~lib/typedarray/Uint16Array#constructor + local.tee $3 i32.store offset=8 - loop $for-loop|032 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|0129 + local.get $0 + local.get $4 + i32.lt_s if + local.get $2 local.get $0 - local.get $3 i32.const 7616 - local.get $3 + local.get $0 call $~lib/array/Array#__get - i32.const 255 + i32.const 65535 i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + call $~lib/typedarray/Uint16Array#__set local.get $3 + local.get $0 i32.const 7616 - local.get $3 + local.get $0 call $~lib/array/Array#__get - i32.const 255 + i32.const 65535 i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + call $~lib/typedarray/Uint16Array#__set + local.get $0 i32.const 1 i32.add - local.set $3 - br $for-loop|032 + local.set $0 + br $for-loop|0129 end end - local.get $0 - call $~lib/typedarray/Int8Array#reverse + local.get $2 + call $~lib/typedarray/Int16Array#reverse drop i32.const 0 - local.set $3 - loop $for-loop|133 - local.get $2 - local.get $3 - i32.gt_s + local.set $0 + loop $for-loop|1130 + local.get $0 + local.get $4 + i32.lt_s if + local.get $2 local.get $0 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint16Array#__get i32.const 7616 - local.get $2 + local.get $4 i32.const 1 i32.sub - local.get $3 + local.get $0 i32.sub call $~lib/array/Array#__get - i32.const 255 + i32.const 65535 i32.and i32.ne - br_if $folding-inner24 - local.get $3 + br_if $folding-inner31 + local.get $0 i32.const 1 i32.add - local.set $3 - br $for-loop|133 + local.set $0 + br $for-loop|1130 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.set $1 + call $~lib/typedarray/Uint16Array#subarray + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int8Array#reverse + local.get $0 + call $~lib/typedarray/Int16Array#reverse local.tee $0 i32.store offset=16 local.get $0 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint16Array#__get i32.const 8 i32.ne - br_if $folding-inner25 + br_if $folding-inner32 local.get $0 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint16Array#__get i32.const 7 i32.ne - br_if $folding-inner26 + br_if $folding-inner33 local.get $0 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint16Array#__get i32.const 6 i32.ne - br_if $folding-inner27 + br_if $folding-inner34 local.get $0 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint16Array#__get i32.const 5 i32.ne - br_if $folding-inner28 + 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 $3 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59293,7 +58294,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59310,113 +58311,216 @@ local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 + local.tee $10 + call $~lib/typedarray/Int32Array#constructor + local.tee $9 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 + local.get $10 + call $~lib/typedarray/Int32Array#constructor + local.tee $8 i32.store offset=8 - loop $for-loop|034 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|0171 + local.get $1 + local.get $10 + i32.lt_s if - local.get $0 - local.get $3 + local.get $9 + 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 + call $~lib/typedarray/Int32Array#__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 + call $~lib/typedarray/Int32Array#__set + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|034 + local.set $1 + br $for-loop|0171 + end + end + i32.const 0 + local.set $0 + local.get $9 + i32.load offset=4 + local.set $6 + local.get $9 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 + i32.const 1 + i32.gt_u + if + local.get $1 + i32.const 1 + i32.shr_u + local.set $4 + local.get $1 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + local.get $6 + i32.add + 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 $6 + i32.add + 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 $0 + br $while-continue|0 + end 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 + local.set $1 + loop $for-loop|1131 + local.get $1 + local.get $10 + i32.lt_s if - local.get $0 - local.get $3 - call $~lib/typedarray/Int16Array#__get + local.get $9 + local.get $1 + call $~lib/typedarray/Int32Array#__get i32.const 7616 - local.get $2 + local.get $10 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 + br_if $folding-inner31 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|135 + local.set $1 + br $for-loop|1131 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 + i32.const 4 i32.const 8 - call $~lib/typedarray/Int16Array#subarray - local.set $1 + call $~lib/typedarray/Int32Array#subarray + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int16Array#reverse + 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|0133 + 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|0133 + end + end + end + local.get $8 i32.store offset=16 - local.get $0 + local.get $8 i32.const 0 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 8 i32.ne - br_if $folding-inner25 - local.get $0 + br_if $folding-inner32 + local.get $8 i32.const 1 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 7 i32.ne - br_if $folding-inner26 - local.get $0 + br_if $folding-inner33 + local.get $8 i32.const 2 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 6 i32.ne - br_if $folding-inner27 - local.get $0 + br_if $folding-inner34 + local.get $8 i32.const 3 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 5 i32.ne - br_if $folding-inner28 + 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 $3 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59424,7 +58528,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59441,116 +58545,215 @@ local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 + local.tee $10 + call $~lib/typedarray/Uint32Array#constructor + local.tee $9 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 + local.get $10 + call $~lib/typedarray/Uint32Array#constructor + local.tee $8 i32.store offset=8 - loop $for-loop|037 - local.get $2 - local.get $3 + loop $for-loop|021134 + local.get $10 + local.get $16 i32.gt_s if - local.get $0 - local.get $3 + local.get $9 + local.get $16 i32.const 7616 - local.get $3 + local.get $16 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $1 - local.get $3 + call $~lib/typedarray/Uint32Array#__set + local.get $8 + local.get $16 i32.const 7616 - local.get $3 + local.get $16 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $3 + call $~lib/typedarray/Uint32Array#__set + local.get $16 i32.const 1 i32.add - local.set $3 - br $for-loop|037 + local.set $16 + br $for-loop|021134 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 + local.set $0 + local.get $9 + i32.load offset=4 + local.set $6 + local.get $9 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 + i32.const 1 + i32.gt_u + if + local.get $1 + i32.const 1 + i32.shr_u + local.set $4 + local.get $1 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|0136 + local.get $0 + local.get $4 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + local.get $6 + i32.add + 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 $6 + i32.add + 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 $0 + br $while-continue|0136 + end + end + end + i32.const 0 + local.set $16 + loop $for-loop|124 + local.get $10 + local.get $16 i32.gt_s if - local.get $0 - local.get $3 - call $~lib/typedarray/Uint16Array#__get + local.get $9 + local.get $16 + call $~lib/typedarray/Uint32Array#__get i32.const 7616 - local.get $2 + local.get $10 i32.const 1 i32.sub - local.get $3 + local.get $16 i32.sub call $~lib/array/Array#__get - i32.const 65535 - i32.and i32.ne - br_if $folding-inner24 - local.get $3 + br_if $folding-inner31 + local.get $16 i32.const 1 i32.add - local.set $3 - br $for-loop|138 + local.set $16 + br $for-loop|124 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 i32.const 8 - call $~lib/typedarray/Uint16Array#subarray - local.set $1 + call $~lib/typedarray/Uint32Array#subarray + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int16Array#reverse + 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|0138 + 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|0138 + end + end + end + local.get $8 i32.store offset=16 - local.get $0 + local.get $8 i32.const 0 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 8 i32.ne - br_if $folding-inner25 - local.get $0 + br_if $folding-inner32 + local.get $8 i32.const 1 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 7 i32.ne - br_if $folding-inner26 - local.get $0 + br_if $folding-inner33 + local.get $8 i32.const 2 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 6 i32.ne - br_if $folding-inner27 - local.get $0 + br_if $folding-inner34 + local.get $8 i32.const 3 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 5 i32.ne - br_if $folding-inner28 + 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/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> @@ -59576,30 +58779,27 @@ 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 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 - 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 @@ -59608,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|0 + 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 @@ -59629,8 +58829,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $5 block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) i32.const 0 local.get $4 @@ -59638,42 +58836,38 @@ i32.const 3 i32.shr_u local.tee $1 - i32.const 0 - local.get $1 - select 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|0140 local.get $1 - local.get $5 + local.get $51 i32.gt_s if i32.const 1 - i32.const 1 - local.get $5 + local.get $51 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 $51 i32.const 1 i32.add - local.set $5 - br $while-continue|0289 + local.set $51 + br $while-continue|0140 end end i32.const 0 @@ -59697,30 +58891,27 @@ 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 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 - 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 @@ -59729,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|0290 + 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 @@ -59750,8 +58941,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $5 block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) i32.const 0 local.get $4 @@ -59759,42 +58948,38 @@ i32.const 2 i32.shr_u local.tee $1 - i32.const 0 - local.get $1 - select 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|029 local.get $1 - local.get $5 + local.get $52 i32.gt_s if i32.const 1 - i32.const 1 - local.get $5 + local.get $52 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 $52 i32.const 1 i32.add - local.set $5 - br $while-continue|078 + local.set $52 + br $while-continue|029 end end i32.const 0 @@ -59815,7 +59000,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59864,7 +59049,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -59872,7 +59057,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -59882,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-inner16 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59910,7 +59094,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59959,7 +59143,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner12 local.get $1 call $~lib/typedarray/Uint8Array#toString local.set $1 @@ -59974,7 +59158,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59986,7 +59170,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60035,7 +59219,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner12 local.get $1 call $~lib/typedarray/Uint8Array#toString local.set $1 @@ -60050,7 +59234,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60062,7 +59246,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60111,7 +59295,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60119,7 +59303,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60129,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-inner16 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60157,7 +59340,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60206,7 +59389,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60214,7 +59397,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60224,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-inner16 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60252,7 +59434,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60301,7 +59483,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60309,7 +59491,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60319,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-inner16 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60347,7 +59528,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60396,7 +59577,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60404,7 +59585,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60414,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-inner16 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60442,7 +59622,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60491,7 +59671,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60499,7 +59679,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60509,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-inner16 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60537,7 +59716,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60586,7 +59765,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60594,7 +59773,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60604,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-inner16 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60632,7 +59810,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60681,7 +59859,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner17 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60689,7 +59867,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60699,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-inner18 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60727,7 +59904,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60776,7 +59953,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner17 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60784,7 +59961,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60794,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-inner18 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60861,8 +60037,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $2 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60870,7 +60044,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60887,122 +60061,123 @@ 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|035142 + local.get $6 + local.get $21 + i32.gt_s if - local.get $6 - local.get $2 + local.get $4 + local.get $21 i32.const 10928 - local.get $2 + local.get $21 call $~lib/array/Array#__get i32.extend8_s call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $21 i32.const 1 i32.add - local.set $2 - br $for-loop|041 + local.set $21 + br $for-loop|035142 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 - i32.load offset=8 local.get $0 + local.get $4 + i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 + 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-inner23 + br_if $folding-inner22 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 $21 + loop $for-loop|139 + local.get $6 + local.get $21 + i32.gt_s if - local.get $6 - local.get $2 + local.get $4 + local.get $21 call $~lib/typedarray/Int8Array#__get - local.get $1 - local.get $2 + local.get $0 + local.get $21 call $~lib/typedarray/Int8Array#__get i32.ne - br_if $folding-inner29 - local.get $2 + br_if $folding-inner17 + local.get $21 i32.const 1 i32.add - local.set $2 - br $for-loop|142 + 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 @@ -61010,7 +60185,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61027,46 +60202,46 @@ 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 - local.get $1 - local.get $2 - i32.lt_s + loop $for-loop|044 + local.get $3 + local.get $22 + i32.gt_s if - local.get $3 - local.get $1 + local.get $2 + 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|043 + local.set $22 + br $for-loop|044 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 i32.add call $~lib/arraybuffer/ArrayBuffer#slice @@ -61081,33 +60256,31 @@ local.tee $0 i32.store offset=16 i32.const 0 - local.set $1 - loop $for-loop|144 - local.get $1 - local.get $2 - i32.lt_s + local.set $22 + loop $for-loop|149 + local.get $3 + local.get $22 + i32.gt_s if - local.get $3 - local.get $1 + local.get $2 + 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-inner29 - local.get $1 + br_if $folding-inner17 + local.get $22 i32.const 1 i32.add - local.set $1 - br $for-loop|144 + 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 $2 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -61115,7 +60288,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61132,123 +60305,124 @@ 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|054 + local.get $6 + local.get $23 + i32.gt_s if - local.get $6 - local.get $2 + local.get $4 + local.get $23 i32.const 10928 - local.get $2 + local.get $23 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 + local.get $23 i32.const 1 i32.add - local.set $2 - br $for-loop|047 + local.set $23 + br $for-loop|054 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 - i32.load offset=8 local.get $0 + local.get $4 + i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 + 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-inner23 + br_if $folding-inner22 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 $23 + loop $for-loop|159 + local.get $6 + local.get $23 + i32.gt_s if - local.get $6 - local.get $2 + local.get $4 + local.get $23 call $~lib/typedarray/Uint8ClampedArray#__get - local.get $1 - local.get $2 + local.get $0 + local.get $23 call $~lib/typedarray/Uint8ClampedArray#__get i32.ne - br_if $folding-inner29 - local.get $2 + br_if $folding-inner17 + local.get $23 i32.const 1 i32.add - local.set $2 - br $for-loop|148 + 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 @@ -61256,7 +60430,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61273,61 +60447,61 @@ 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 - local.get $1 - local.get $2 - i32.lt_s + loop $for-loop|064200 + local.get $6 + local.get $24 + i32.gt_s if - local.get $6 - local.get $1 + local.get $4 + 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|053 + local.set $24 + br $for-loop|064200 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 - i32.load offset=8 local.get $0 + local.get $4 + i32.load offset=8 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61335,62 +60509,63 @@ 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-inner18 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 - local.get $1 - local.get $2 - i32.lt_s + local.set $24 + loop $for-loop|169 + local.get $6 + local.get $24 + i32.gt_s if - local.get $6 - local.get $1 - call $~lib/typedarray/Int16Array#__get local.get $4 - local.get $1 + local.get $24 + call $~lib/typedarray/Int16Array#__get + local.get $0 + local.get $24 call $~lib/typedarray/Int16Array#__get i32.ne - br_if $folding-inner29 - local.get $1 + br_if $folding-inner17 + local.get $24 i32.const 1 i32.add - local.set $1 - br $for-loop|154 + 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 @@ -61398,7 +60573,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61415,62 +60590,62 @@ 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 - local.get $1 - local.get $2 - i32.lt_s + loop $for-loop|074 + local.get $6 + local.get $25 + i32.gt_s if - local.get $6 - local.get $1 + local.get $4 + 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|057 + local.set $25 + br $for-loop|074 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 - i32.load offset=8 local.get $0 + local.get $4 + i32.load offset=8 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61478,62 +60653,63 @@ 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-inner18 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 - local.get $1 - local.get $2 - i32.lt_s + local.set $25 + loop $for-loop|179 + local.get $6 + local.get $25 + i32.gt_s if - local.get $6 - local.get $1 - call $~lib/typedarray/Uint16Array#__get local.get $4 - local.get $1 + local.get $25 + call $~lib/typedarray/Uint16Array#__get + local.get $0 + local.get $25 call $~lib/typedarray/Uint16Array#__get i32.ne - br_if $folding-inner29 - local.get $1 + br_if $folding-inner17 + local.get $25 i32.const 1 i32.add - local.set $1 - br $for-loop|158 + 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 @@ -61541,7 +60717,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61558,60 +60734,60 @@ 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 - local.get $1 - local.get $2 - i32.lt_s + loop $for-loop|084146 + local.get $6 + local.get $26 + i32.gt_s if - local.get $6 - local.get $1 + local.get $4 + 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|060 + local.set $26 + br $for-loop|084146 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 - i32.load offset=8 local.get $0 + local.get $4 + i32.load offset=8 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61619,62 +60795,63 @@ 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-inner18 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 - local.get $1 - local.get $2 - i32.lt_s + local.set $26 + loop $for-loop|189 + local.get $6 + local.get $26 + i32.gt_s if - local.get $6 - local.get $1 - call $~lib/typedarray/Int32Array#__get local.get $4 - local.get $1 + local.get $26 + call $~lib/typedarray/Int32Array#__get + local.get $0 + local.get $26 call $~lib/typedarray/Int32Array#__get i32.ne - br_if $folding-inner29 - local.get $1 + br_if $folding-inner17 + local.get $26 i32.const 1 i32.add - local.set $1 - br $for-loop|161 + 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 @@ -61682,7 +60859,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61699,60 +60876,60 @@ 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 - local.get $1 - local.get $2 - i32.lt_s + loop $for-loop|094148 + local.get $6 + local.get $27 + i32.gt_s if - local.get $6 - local.get $1 + local.get $4 + 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|064 + local.set $27 + br $for-loop|094148 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 - i32.load offset=8 local.get $0 + local.get $4 + i32.load offset=8 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61760,62 +60937,63 @@ 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-inner18 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 - local.get $1 - local.get $2 - i32.lt_s + local.set $27 + loop $for-loop|199 + local.get $6 + local.get $27 + i32.gt_s if - local.get $6 - local.get $1 - call $~lib/typedarray/Uint32Array#__get local.get $4 - local.get $1 + local.get $27 + call $~lib/typedarray/Uint32Array#__get + local.get $0 + local.get $27 call $~lib/typedarray/Uint32Array#__get i32.ne - br_if $folding-inner29 - local.get $1 + br_if $folding-inner17 + local.get $27 i32.const 1 i32.add - local.set $1 - br $for-loop|165 + 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 @@ -61823,7 +61001,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61840,61 +61018,61 @@ 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 - local.get $1 - local.get $2 - i32.lt_s + loop $for-loop|0104 + local.get $6 + local.get $28 + i32.gt_s if - local.get $6 - local.get $1 + local.get $4 + 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|070 + local.set $28 + br $for-loop|0104 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 - i32.load offset=8 local.get $0 + local.get $4 + i32.load offset=8 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61902,62 +61080,63 @@ 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-inner18 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 - local.get $1 - local.get $2 - i32.lt_s + local.set $28 + loop $for-loop|1109 + local.get $6 + local.get $28 + i32.gt_s if - local.get $6 - local.get $1 - call $~lib/typedarray/Int64Array#__get local.get $4 - local.get $1 + local.get $28 + call $~lib/typedarray/Int64Array#__get + local.get $0 + local.get $28 call $~lib/typedarray/Int64Array#__get i64.ne - br_if $folding-inner29 - local.get $1 + br_if $folding-inner17 + local.get $28 i32.const 1 i32.add - local.set $1 - br $for-loop|171 + 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 @@ -61965,7 +61144,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61982,61 +61161,61 @@ 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 - local.get $1 - local.get $2 - i32.lt_s + loop $for-loop|0114151 + local.get $6 + local.get $29 + i32.gt_s if - local.get $6 - local.get $1 + local.get $4 + 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|074 + local.set $29 + br $for-loop|0114151 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 - i32.load offset=8 local.get $0 + local.get $4 + i32.load offset=8 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62044,62 +61223,63 @@ 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-inner18 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 - local.get $1 - local.get $2 - i32.lt_s + local.set $29 + loop $for-loop|1119 + local.get $6 + local.get $29 + i32.gt_s if - local.get $6 - local.get $1 - call $~lib/typedarray/Uint64Array#__get local.get $4 - local.get $1 + local.get $29 + call $~lib/typedarray/Uint64Array#__get + local.get $0 + local.get $29 call $~lib/typedarray/Uint64Array#__get i64.ne - br_if $folding-inner29 - local.get $1 + br_if $folding-inner17 + local.get $29 i32.const 1 i32.add - local.set $1 - br $for-loop|175 + local.set $29 + br $for-loop|1119 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 @@ -62107,7 +61287,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62124,61 +61304,61 @@ 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 - local.get $1 - local.get $2 - i32.lt_s + loop $for-loop|0124 + local.get $6 + local.get $30 + i32.gt_s if - local.get $6 - local.get $1 + local.get $4 + 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|077 + local.set $30 + br $for-loop|0124 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 - i32.load offset=8 local.get $0 + local.get $4 + i32.load offset=8 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62186,62 +61366,63 @@ 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-inner18 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 - local.get $1 - local.get $2 - i32.lt_s + local.set $30 + loop $for-loop|1129 + local.get $6 + local.get $30 + i32.gt_s if - local.get $6 - local.get $1 - call $~lib/typedarray/Float32Array#__get local.get $4 - local.get $1 + local.get $30 + call $~lib/typedarray/Float32Array#__get + local.get $0 + local.get $30 call $~lib/typedarray/Float32Array#__get f32.ne - br_if $folding-inner29 - local.get $1 + br_if $folding-inner17 + local.get $30 i32.const 1 i32.add - local.set $1 - br $for-loop|178 + 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 @@ -62249,7 +61430,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62266,61 +61447,61 @@ 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 - local.get $1 - local.get $2 - i32.lt_s + loop $for-loop|0134 + local.get $6 + local.get $31 + i32.gt_s if - local.get $6 - local.get $1 + local.get $4 + 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|080 + local.set $31 + br $for-loop|0134 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 - i32.load offset=8 local.get $0 + local.get $4 + i32.load offset=8 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-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62328,54 +61509,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-inner18 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 - local.get $1 - local.get $2 - i32.lt_s + local.set $31 + loop $for-loop|1139 + local.get $6 + local.get $31 + i32.gt_s if - local.get $6 - local.get $1 - call $~lib/typedarray/Float64Array#__get local.get $4 - local.get $1 + local.get $31 + call $~lib/typedarray/Float64Array#__get + local.get $0 + local.get $31 call $~lib/typedarray/Float64Array#__get f64.ne - br_if $folding-inner29 - local.get $1 + br_if $folding-inner17 + local.get $31 i32.const 1 i32.add - local.set $1 - br $for-loop|181 + local.set $31 + br $for-loop|1139 end end global.get $~lib/memory/__stack_pointer @@ -62396,105 +61580,105 @@ 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 + 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-inner20 + 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|0145 + local.get $0 + local.get $48 i32.gt_s if - local.get $4 - local.get $16 + local.get $2 + local.get $48 i32.add - local.get $16 + local.get $48 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 +61686,73 @@ i32.const 0 end i32.store8 - local.get $16 + local.get $48 i32.const 1 i32.add - local.set $16 - br $for-loop|082 + local.set $48 + br $for-loop|0145 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.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-inner20 + 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|0151 + local.get $1 + local.get $49 i32.gt_s if - local.get $2 - local.get $6 + local.get $3 + local.get $49 i32.add - local.get $6 + local.get $49 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load - local.tee $3 + local.tee $0 i32.const 255 - local.get $3 + local.get $0 i32.sub i32.const 31 i32.shr_s 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 $49 i32.const 1 i32.add - local.set $6 - br $for-loop|086311 + local.set $49 + br $for-loop|0151 end end i32.const 10 @@ -62582,7 +61764,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 @@ -62627,17 +61809,15 @@ i32.const 3 i32.const 300 call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $6 - local.get $7 + 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-inner20 + local.get $6 i32.load offset=4 local.set $3 local.get $0 @@ -62648,16 +61828,16 @@ i32.const 2 i32.shr_u local.set $1 - loop $for-loop|090 + loop $for-loop|0157 local.get $1 - local.get $6 + local.get $50 i32.gt_s if local.get $3 - local.get $6 + local.get $50 i32.add i32.const 255 - local.get $6 + local.get $50 i32.const 2 i32.shl local.get $2 @@ -62669,14 +61849,14 @@ i32.gt_u select i32.store8 - local.get $6 + local.get $50 i32.const 1 i32.add - local.set $6 - br $for-loop|090 + local.set $50 + br $for-loop|0157 end end - local.get $7 + local.get $6 local.get $4 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> @@ -62689,11 +61869,9 @@ 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 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -62701,7 +61879,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62726,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 @@ -62736,7 +61916,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62749,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 @@ -62758,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 @@ -62771,19 +61951,19 @@ call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne - br_if $folding-inner31 + br_if $folding-inner36 local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 2 i32.ne - br_if $folding-inner32 + br_if $folding-inner37 local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15376 i32.store offset=8 @@ -62798,25 +61978,23 @@ call $~lib/typedarray/Int8Array#__get i32.const 3 i32.ne - br_if $folding-inner34 + br_if $folding-inner39 local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 2 i32.ne - br_if $folding-inner35 + br_if $folding-inner40 local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + 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 @@ -62824,7 +62002,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62849,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 @@ -62859,20 +62039,20 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of184 - block $0of185 - block $outOfRange86 + block $1of1157 + block $0of1158 + block $outOfRange159 global.get $~argumentsLength - br_table $0of185 $1of184 $outOfRange86 + 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 @@ -62881,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 @@ -62894,19 +62074,19 @@ call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne - br_if $folding-inner31 + br_if $folding-inner36 local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 2 i32.ne - br_if $folding-inner32 + br_if $folding-inner37 local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15440 i32.store offset=8 @@ -62921,25 +62101,23 @@ call $~lib/typedarray/Uint8Array#__get i32.const 3 i32.ne - br_if $folding-inner34 + br_if $folding-inner39 local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 2 i32.ne - br_if $folding-inner35 + br_if $folding-inner40 local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + 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 @@ -62947,7 +62125,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62972,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 @@ -62982,20 +62162,20 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of188 - block $0of189 - block $outOfRange90 + block $1of1161 + block $0of1162 + block $outOfRange163 global.get $~argumentsLength - br_table $0of189 $1of188 $outOfRange90 + 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 @@ -63004,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 @@ -63017,19 +62197,19 @@ call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne - br_if $folding-inner31 + br_if $folding-inner36 local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 i32.ne - br_if $folding-inner32 + br_if $folding-inner37 local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15504 i32.store offset=8 @@ -63044,25 +62224,23 @@ call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.ne - br_if $folding-inner34 + br_if $folding-inner39 local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 i32.ne - br_if $folding-inner35 + br_if $folding-inner40 local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne - br_if $folding-inner36 + 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 @@ -63070,7 +62248,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63081,23 +62259,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 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63105,91 +62285,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of192 - block $0of193 - block $outOfRange94 + block $1of131 + block $0of132 + block $outOfRange33 global.get $~argumentsLength - br_table $0of193 $1of192 $outOfRange94 + br_table $0of132 $1of131 $outOfRange33 end unreachable end i32.const 15536 - local.set $1 + local.set $13 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 $13 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-inner36 + 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-inner37 + local.get $1 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner38 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-inner39 + 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-inner40 + local.get $1 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + 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 @@ -63197,7 +62375,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63208,23 +62386,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 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63232,91 +62412,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of196 - block $0of197 - block $outOfRange98 + block $1of135 + block $0of136 + block $outOfRange37 global.get $~argumentsLength - br_table $0of197 $1of196 $outOfRange98 + br_table $0of136 $1of135 $outOfRange37 end unreachable end i32.const 15600 - local.set $1 + local.set $13 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 $13 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-inner36 + 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-inner37 + local.get $1 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner38 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-inner39 + 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-inner40 + local.get $1 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + 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 @@ -63324,7 +62502,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63335,23 +62513,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 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63359,91 +62539,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1100 - block $0of1101 - block $outOfRange102 + block $1of139 + block $0of140 + block $outOfRange41 global.get $~argumentsLength - br_table $0of1101 $1of1100 $outOfRange102 + br_table $0of140 $1of139 $outOfRange41 end unreachable end i32.const 15664 - local.set $1 + local.set $13 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 $13 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-inner36 + 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-inner37 + local.get $1 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner38 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-inner39 + 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-inner40 + local.get $1 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + 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 @@ -63451,7 +62629,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63462,23 +62640,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 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63486,91 +62666,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1104 - block $0of1105 - block $outOfRange106 + block $1of143 + block $0of144 + block $outOfRange45 global.get $~argumentsLength - br_table $0of1105 $1of1104 $outOfRange106 + br_table $0of144 $1of143 $outOfRange45 end unreachable end i32.const 15728 - local.set $1 + local.set $13 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 $13 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-inner36 + 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-inner37 + local.get $1 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner38 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-inner39 + 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-inner40 + local.get $1 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + 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 @@ -63578,7 +62756,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63589,23 +62767,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 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63613,91 +62793,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1108 - block $0of1109 - block $outOfRange110 + block $1of147 + block $0of148 + block $outOfRange49 global.get $~argumentsLength - br_table $0of1109 $1of1108 $outOfRange110 + br_table $0of148 $1of147 $outOfRange49 end unreachable end i32.const 15792 - local.set $1 + local.set $13 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 $13 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-inner36 + 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-inner37 + local.get $1 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 3 i64.ne - br_if $folding-inner33 + br_if $folding-inner38 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-inner39 + 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-inner40 + local.get $1 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne - br_if $folding-inner36 + 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 @@ -63705,7 +62883,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63716,23 +62894,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 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63740,91 +62920,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1112 - block $0of1113 - block $outOfRange114 + block $1of151 + block $0of152 + block $outOfRange53 global.get $~argumentsLength - br_table $0of1113 $1of1112 $outOfRange114 + br_table $0of152 $1of151 $outOfRange53 end unreachable end i32.const 15856 - local.set $1 + local.set $13 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 $13 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-inner36 + 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-inner37 + local.get $1 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 3 i64.ne - br_if $folding-inner33 + br_if $folding-inner38 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-inner39 + 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-inner40 + local.get $1 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne - br_if $folding-inner36 + 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 @@ -63832,7 +63010,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63843,23 +63021,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 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63867,85 +63047,85 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1116 - block $0of1117 - block $outOfRange118 + block $1of155 + block $0of156 + block $outOfRange57 global.get $~argumentsLength - br_table $0of1117 $1of1116 $outOfRange118 + br_table $0of156 $1of155 $outOfRange57 end unreachable end i32.const 15920 - local.set $1 + local.set $13 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 $13 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-inner36 + 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-inner37 + local.get $1 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 3 f32.ne - br_if $folding-inner33 + br_if $folding-inner38 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-inner39 + 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-inner40 + local.get $1 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne - br_if $folding-inner36 + br_if $folding-inner41 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -63957,7 +63137,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63994,19 +63174,19 @@ call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne - br_if $folding-inner31 + br_if $folding-inner36 local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 2 f64.ne - br_if $folding-inner32 + br_if $folding-inner37 local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 3 f64.ne - br_if $folding-inner33 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15984 i32.store offset=8 @@ -64023,19 +63203,19 @@ call $~lib/typedarray/Float64Array#__get f64.const 3 f64.ne - br_if $folding-inner34 + br_if $folding-inner39 local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 2 f64.ne - br_if $folding-inner35 + br_if $folding-inner40 local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne - br_if $folding-inner36 + br_if $folding-inner41 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -64046,12 +63226,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|091 + loop $while-continue|0161 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|091 + br $while-continue|0161 end end end @@ -64118,176 +63298,176 @@ end i32.const 0 i32.const 1568 - i32.const 438 + i32.const 541 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 440 - i32.const 3 + i32.const 675 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 461 - i32.const 3 + i32.const 676 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 463 - i32.const 3 + i32.const 672 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 484 - i32.const 3 + i32.const 673 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 486 - i32.const 3 + i32.const 730 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1568 - i32.const 507 - 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 509 - 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 541 + i32.const 388 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 675 - i32.const 5 + i32.const 389 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 676 - i32.const 5 + i32.const 390 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1568 - i32.const 672 - i32.const 5 + 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 673 - i32.const 5 + i32.const 438 + 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 440 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 388 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 389 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 390 + i32.const 484 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 486 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 570 - i32.const 5 + i32.const 507 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 575 + i32.const 509 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 576 - i32.const 3 + i32.const 570 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 577 + i32.const 575 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 578 + i32.const 576 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 730 - i32.const 5 + i32.const 577 + 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 578 + i32.const 3 call $~lib/builtins/abort unreachable end @@ -64367,9 +63547,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 @@ -64382,7 +63559,7 @@ if i32.const 1056 i32.const 1104 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -64391,26 +63568,25 @@ 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 - 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,31 +64054,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 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.get $3 i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $5 i32.store + local.get $5 local.get $0 - local.get $3 i32.load - local.tee $5 + local.tee $3 i32.store - local.get $0 + local.get $3 + if + local.get $5 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $5 - call $~lib/rt/itcms/__link local.get $0 - local.get $3 i32.load offset=4 local.get $1 i32.const 0 @@ -64911,9 +64089,9 @@ local.get $1 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 @@ -64925,12 +64103,12 @@ 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 $5 local.get $2 i32.const 0 i32.lt_s @@ -64938,9 +64116,9 @@ local.get $2 local.get $4 i32.add - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select @@ -64952,13 +64130,13 @@ 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 +64145,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $5 ) (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -64989,31 +64167,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 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.get $3 i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $5 i32.store + local.get $5 local.get $0 - local.get $3 i32.load - local.tee $5 + local.tee $3 i32.store - local.get $0 + local.get $3 + if + local.get $5 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $5 - call $~lib/rt/itcms/__link local.get $0 - local.get $3 i32.load offset=4 local.get $1 i32.const 0 @@ -65022,9 +64202,9 @@ local.get $1 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 @@ -65036,12 +64216,12 @@ 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 $5 local.get $2 i32.const 0 i32.lt_s @@ -65049,9 +64229,9 @@ local.get $2 local.get $4 i32.add - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select @@ -65063,13 +64243,13 @@ 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 +64258,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $5 ) (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (result i32) (local $1 i32) @@ -65131,7 +64311,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,42 +64327,43 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store local.get $0 local.get $1 i32.shl - local.tee $4 - local.set $6 - local.get $4 + local.tee $1 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 $4 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.get $5 i32.store + local.get $5 + if + local.get $2 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $2 - local.get $1 - call $~lib/rt/itcms/__link - local.get $2 - local.get $1 + local.get $5 i32.store offset=4 local.get $2 - local.get $4 + local.get $1 i32.store offset=8 local.get $2 local.get $0 @@ -65214,28 +64394,30 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 i32.const 0 i32.store local.get $0 - local.tee $3 i32.load offset=8 local.set $4 - local.get $5 + local.get $3 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store - local.get $0 local.get $3 + local.get $0 i32.load local.tee $5 i32.store - local.get $0 local.get $5 - call $~lib/rt/itcms/__link - local.get $0 + if + local.get $3 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $1 i32.const 0 i32.lt_s @@ -65258,11 +64440,11 @@ select end local.tee $1 - local.get $3 + local.get $0 i32.load offset=4 i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $2 i32.const 0 i32.lt_s @@ -65270,9 +64452,9 @@ local.get $2 local.get $4 i32.add - local.tee $2 + local.tee $0 i32.const 0 - local.get $2 + local.get $0 i32.const 0 i32.gt_s select @@ -65284,11 +64466,11 @@ i32.lt_s select end - local.tee $2 + local.tee $0 local.get $1 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s select local.get $1 i32.sub @@ -65297,7 +64479,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -65376,11 +64558,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 +64570,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 +64578,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 +64604,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 $4 i32.store + local.get $4 local.get $0 - local.get $2 i32.load local.tee $3 i32.store - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $4 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 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 $4 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 +64651,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 $4 ) (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65512,42 +64696,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 $4 i32.store + local.get $4 local.get $0 - local.get $2 i32.load local.tee $3 i32.store - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $4 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 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 $4 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 +64743,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 $4 ) (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65598,31 +64784,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 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.get $2 i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store + local.get $4 local.get $0 - local.get $2 i32.load - local.tee $4 + local.tee $2 i32.store - local.get $0 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $4 - call $~lib/rt/itcms/__link local.get $0 - local.get $2 i32.load offset=4 i32.const 4 local.get $3 @@ -65630,12 +64818,12 @@ 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 $4 local.get $1 i32.const 0 i32.lt_s @@ -65658,12 +64846,12 @@ 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 +64860,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65694,31 +64882,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 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.get $2 i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store + local.get $4 local.get $0 - local.get $2 i32.load - local.tee $4 + local.tee $2 i32.store - local.get $0 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $4 - call $~lib/rt/itcms/__link local.get $0 - local.get $2 i32.load offset=4 i32.const 4 local.get $3 @@ -65726,12 +64916,12 @@ 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 $4 local.get $1 i32.const 0 i32.lt_s @@ -65754,12 +64944,12 @@ 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 +64958,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65790,31 +64980,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 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.get $2 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store + local.get $4 local.get $0 - local.get $2 i32.load - local.tee $4 + local.tee $2 i32.store - local.get $0 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $4 - call $~lib/rt/itcms/__link local.get $0 - local.get $2 i32.load offset=4 i32.const 4 local.get $3 @@ -65822,12 +65014,12 @@ 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 $4 local.get $1 i32.const 0 i32.lt_s @@ -65850,12 +65042,12 @@ 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 +65056,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65886,31 +65078,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 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.get $2 i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store + local.get $4 local.get $0 - local.get $2 i32.load - local.tee $4 + local.tee $2 i32.store - local.get $0 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $4 - call $~lib/rt/itcms/__link local.get $0 - local.get $2 i32.load offset=4 i32.const 4 local.get $3 @@ -65918,12 +65112,12 @@ 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 $4 local.get $1 i32.const 0 i32.lt_s @@ -65946,12 +65140,12 @@ 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 +65154,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65982,31 +65176,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 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.get $2 i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store + local.get $4 local.get $0 - local.get $2 i32.load - local.tee $4 + local.tee $2 i32.store - local.get $0 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $4 - call $~lib/rt/itcms/__link local.get $0 - local.get $2 i32.load offset=4 i32.const 4 local.get $3 @@ -66014,12 +65210,12 @@ 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 $4 local.get $1 i32.const 0 i32.lt_s @@ -66042,12 +65238,12 @@ 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 +65252,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -66078,31 +65274,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 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.get $2 i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store + local.get $4 local.get $0 - local.get $2 i32.load - local.tee $4 + local.tee $2 i32.store - local.get $0 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $4 - call $~lib/rt/itcms/__link local.get $0 - local.get $2 i32.load offset=4 i32.const 4 local.get $3 @@ -66110,12 +65308,12 @@ 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 $4 local.get $1 i32.const 0 i32.lt_s @@ -66138,12 +65336,12 @@ 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 +65350,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) @@ -66194,71 +65392,70 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select - local.tee $2 local.tee $0 + select + local.tee $3 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $3 i32.const 100000000 i32.ge_u i32.add end end - local.get $1 + 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 $0 + local.tee $2 i32.store - local.get $0 local.get $2 local.get $3 - call $~lib/util/number/utoa32_dec_lut local.get $1 + call $~lib/util/number/utoa32_dec_lut + local.get $0 if - local.get $0 + local.get $2 i32.const 45 i32.store16 end @@ -66266,7 +65463,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $2 ) (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -66291,48 +65488,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 - 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 $3 - local.get $4 + local.tee $4 + local.get $3 i32.sub - local.tee $1 + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -66343,12 +65536,12 @@ return end i32.const 0 - local.get $2 + local.get $1 i32.const 1 i32.shl - local.get $3 - i32.eq local.get $4 + i32.eq + local.get $3 select if global.get $~lib/memory/__stack_pointer @@ -66359,22 +65552,22 @@ return end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 local.get $0 - local.get $4 + local.get $3 i32.add - local.get $1 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) (func $~lib/util/number/utoa32 (param $0 i32) (result i32) (local $1 i32) @@ -66409,68 +65602,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) @@ -66538,25 +65730,24 @@ 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) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -66581,7 +65772,7 @@ if i32.const 1056 i32.const 1104 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -66590,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) @@ -66679,21 +65866,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/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index bf2c7a5a80..151728470b 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)) @@ -1902,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 @@ -5974,7 +5979,7 @@ if i32.const 336 i32.const 736 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -6149,7 +6154,7 @@ if i32.const 336 i32.const 736 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -22740,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 @@ -22836,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 @@ -40504,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 @@ -62639,7 +62647,7 @@ if i32.const 32 i32.const 80 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -62653,10 +62661,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 +69683,7 @@ if i32.const 32 i32.const 80 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -69686,10 +69694,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.optimized.wat b/tests/compiler/std/uri.optimized.wat index 1cba4a4eec..26d3543049 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 @@ -952,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 - global.set $~lib/rt/itcms/iter - br $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 + 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 + 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 @@ -999,271 +913,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 +1203,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 +1224,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 +1242,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1425,54 +1263,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 +1315,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 +1332,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 +1368,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 +1387,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1562,7 +1397,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1580,12 +1415,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 @@ -1645,19 +1480,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 +1501,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 +1521,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 +1533,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 +1655,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 +1670,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 +1826,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 +1853,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 +1864,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 +1875,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 +1889,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 +1919,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 +1944,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 +1955,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 +1966,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 +1980,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 +2006,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 +2031,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 +2042,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 +2053,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 +2067,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 +2104,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 - i32.const 2 - i32.add - local.tee $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 $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 $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.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 @@ -2410,59 +2223,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 +2286,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 +2297,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 +2315,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 +2536,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -2738,28 +2545,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 +2585,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 +2619,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 +2691,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 +2706,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 +2733,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 +2742,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 +2787,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 +2797,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 +2822,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 +2832,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 65536 i32.lt_u - if + if (result i32) 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 +2857,7 @@ i32.const 1676 i32.add i32.load8_u - local.get $8 + local.get $5 i32.const 15 i32.and i32.const 1676 @@ -3071,20 +2867,23 @@ i32.shl i32.or i32.store offset=2 + local.get $7 + i32.const 6 + i32.add 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 +2891,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 +2902,29 @@ i32.or i32.store offset=2 local.get $3 - local.get $5 + local.get $7 i32.const 6 i32.add local.tee $5 i32.add - local.tee $6 + local.tee $7 i32.const 37 i32.store16 + local.get $7 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 $7 i32.const 4 i32.shr_u i32.const 1676 i32.add i32.load8_u - local.get $8 + local.get $7 i32.const 15 i32.and i32.const 1676 @@ -3135,30 +2934,31 @@ i32.shl i32.or i32.store offset=2 + local.get $5 + i32.const 6 + i32.add end - local.get $5 - i32.const 6 - i32.add - local.tee $6 + local.tee $7 + local.get $3 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 +2968,29 @@ i32.shl i32.or i32.store offset=2 - local.get $6 - i32.const 6 - i32.add end - local.tee $6 + local.get $7 + i32.const 6 + i32.add + local.tee $7 + local.get $3 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 +3000,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 @@ -3227,6 +3028,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -3249,7 +3051,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 @@ -3261,73 +3063,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -3336,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) @@ -3421,7 +3223,6 @@ i32.le_u br_if $while-break|0 end - i32.const 1 local.get $5 i32.const 37 i32.ne @@ -3430,16 +3231,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 +3249,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 +3269,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 +3360,7 @@ i32.const 56 i32.lt_u select - local.tee $9 + local.tee $4 i32.const 17 i32.mul i32.const 2 @@ -3567,23 +3368,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 +3407,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 +3509,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 +3626,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 @@ -3842,7 +3637,6 @@ ) (func $start:std/uri (local $0 i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -3909,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 @@ -3939,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 @@ -3969,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 @@ -3999,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 @@ -4029,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 @@ -4059,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 @@ -4089,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 @@ -4159,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 @@ -4189,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 @@ -4219,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 @@ -4249,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 @@ -4279,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 @@ -4309,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 @@ -4339,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 @@ -4369,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 @@ -4399,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 @@ -4429,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 @@ -4459,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 @@ -4489,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 @@ -4519,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 @@ -4549,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 @@ -4579,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 @@ -4609,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 @@ -4639,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 @@ -4669,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 @@ -4699,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 @@ -4729,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 @@ -4759,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 @@ -4789,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 @@ -4819,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 @@ -4849,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 @@ -4879,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 @@ -4909,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 @@ -4939,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 @@ -4969,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 @@ -4999,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 @@ -5029,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 @@ -5059,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 @@ -5089,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 @@ -5119,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 @@ -5149,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 @@ -5179,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 @@ -5209,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 @@ -5239,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 @@ -5269,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 @@ -5299,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 @@ -5329,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 @@ -5359,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 @@ -5417,4 +5163,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/std/uri.untouched.wat b/tests/compiler/std/uri.untouched.wat index a5eddee6b7..db02ab3292 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)) @@ -1602,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 @@ -4274,22 +4278,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 +4288,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 @@ -4782,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.optimized.wat b/tests/compiler/super-inline.optimized.wat index 54c425d215..3244d03beb 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 @@ -845,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 - global.set $~lib/rt/itcms/iter - br $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 - 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 + i32.const 1 + global.set $~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 local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 i32.ne if local.get $0 - global.set $~lib/rt/itcms/iter + 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/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 @@ -892,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1112,9 +954,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 +972,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 +988,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 @@ -1201,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 @@ -1218,17 +1060,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 +1083,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 +1100,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,22 +1135,22 @@ 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 $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 $2 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1317,19 +1159,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $3 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 $4 i32.const -2 i32.and i32.store @@ -1412,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 @@ -1513,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 @@ -1563,4 +1404,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/super-inline.untouched.wat b/tests/compiler/super-inline.untouched.wat index 01fe2657f3..b144116759 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)) @@ -1534,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.optimized.wat b/tests/compiler/templateliteral.optimized.wat index 44041fd406..274cd08f73 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))) @@ -140,6 +140,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -162,7 +163,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 @@ -174,73 +175,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -249,20 +248,22 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/rt/itcms/visitRoots (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 +330,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -352,7 +353,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -362,15 +363,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,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 @@ -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 @@ -1058,39 +1028,112 @@ (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 - global.set $~lib/rt/itcms/iter - br $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 - 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 - local.get $0 + i32.const 1 + global.set $~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 + 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/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 @@ -1105,271 +1148,196 @@ 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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) + (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 @@ -1470,12 +1438,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 +1459,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 +1477,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.set $5 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1531,54 +1498,51 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + 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 $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 @@ -1586,16 +1550,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 +1567,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 +1603,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 +1622,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1668,7 +1632,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1686,12 +1650,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 @@ -1751,19 +1715,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 +1736,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 +1756,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 +1768,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 +1890,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 +1905,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 +2061,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 +2088,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 +2099,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 +2110,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 +2124,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 +2154,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 +2179,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 +2190,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 +2201,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 +2215,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 +2241,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 +2266,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 +2277,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 +2288,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 +2302,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 +2339,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 @@ -2516,59 +2458,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 +2521,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 +2532,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 +2550,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 +2765,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 +2788,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 +2830,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 +2849,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 +2873,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 $1 local.get $5 i32.const 1180 i32.load i32.const 1 i32.shr_u - local.tee $6 + local.tee $1 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 +2974,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 +2994,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) @@ -3253,56 +3143,55 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select local.tee $2 - local.tee $0 + select + 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 @@ -3312,10 +3201,10 @@ local.tee $0 i32.store local.get $0 - local.get $2 + local.get $1 local.get $3 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 if local.get $0 i32.const 45 @@ -3330,8 +3219,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) @@ -3355,14 +3244,12 @@ 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.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -3408,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 @@ -3426,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 + i32.div_u + 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 @@ -3566,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 @@ -3585,44 +3472,42 @@ i32.shl i32.const 3918 i32.add - local.tee $8 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 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 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 - select + 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 $1 i64.add @@ -3630,8 +3515,8 @@ br $while-continue|3 end end - local.get $8 local.get $5 + local.get $2 i32.store16 local.get $4 return @@ -3644,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 @@ -3659,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 @@ -3676,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 @@ -3710,44 +3595,42 @@ i32.shl i32.const 3918 i32.add - local.tee $8 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 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 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 - select + 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 @@ -3755,16 +3638,13 @@ br $while-continue|6 end end - local.get $8 local.get $5 + local.get $2 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 +3663,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 +3690,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 +3731,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 +3759,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 +3777,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -3911,24 +3788,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 +3850,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 +3883,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 +3903,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 +3973,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 +4004,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 +4031,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 +4045,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 +4072,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 +4082,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 +4111,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 +4191,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 +4211,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,13 +4240,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 $~lib/number/F64#toString (param $0 f64) (result i32) @@ -4509,11 +4377,11 @@ i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 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 +4439,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 +4488,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 +4567,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 +4616,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 +4695,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,208 +4737,7 @@ i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 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 - 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 - 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 + call $templateliteral/test_fast_paths_string global.get $~lib/memory/__stack_pointer i32.const 32 i32.sub @@ -5099,7 +4745,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 @@ -5116,23 +4762,23 @@ local.get $0 i32.const 1 call $templateliteral/Ref#constructor - local.tee $0 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 2 call $templateliteral/Ref#constructor - local.tee $1 + local.tee $0 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 +4790,29 @@ call $~lib/builtins/abort unreachable end - local.get $0 - call $templateliteral/Ref#toString - local.set $2 - global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=16 - local.get $1 call $templateliteral/Ref#toString local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 + i32.store offset=16 + local.get $0 + call $templateliteral/Ref#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=20 - local.get $2 local.get $3 + local.get $1 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 +4825,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 +4886,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 +4951,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 +5327,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,41 +5341,34 @@ 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 global.get $~lib/memory/__stack_pointer i32.const 5616 i32.store offset=12 - i32.const 5620 - local.get $0 - i32.store i32.const 5616 - 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 5616 i32.store offset=12 - i32.const 5628 - local.get $1 - i32.store i32.const 5616 + 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 5616 i32.store offset=12 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1184 i32.store offset=16 i32.const 5616 @@ -5565,7 +5408,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 +5417,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 +5430,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 +5517,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/templateliteral.untouched.wat b/tests/compiler/templateliteral.untouched.wat index 324a967b2c..23a8ef1f66 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)) @@ -1751,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.optimized.wat b/tests/compiler/throw.optimized.wat index 4d5708a9b9..916ccc9c2e 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 @@ -806,13 +648,13 @@ if local.get $0 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 @@ -854,15 +696,13 @@ 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 + 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 @@ -880,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 @@ -892,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 @@ -909,24 +749,24 @@ 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 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 @@ -1134,24 +974,22 @@ 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 1056 i32.store - local.get $0 + local.get $1 i32.const 1216 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -1239,11 +1077,11 @@ i32.const 0 i32.gt_s if - loop $while-continue|00 + loop $while-continue|08 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step - br $while-continue|00 + br $while-continue|08 end end end @@ -1265,4 +1103,153 @@ unreachable end ) + (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 $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 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18140 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 1728 + i32.load + local.get $1 + i32.lt_u + if + i32.const 1488 + i32.const 1552 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1732 + i32.add + i32.load + i32.const 32 + i32.and + end + 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 + ) ) diff --git a/tests/compiler/throw.untouched.wat b/tests/compiler/throw.untouched.wat index 61aae9f920..3ab9afb46d 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)) @@ -1661,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.optimized.wat b/tests/compiler/typeof.optimized.wat index 5a3c286aea..657bbe6d3a 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))) @@ -58,6 +58,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -80,7 +81,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 @@ -92,73 +93,71 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $3 - i64.load + 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 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-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 $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 $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 $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -167,24 +166,26 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/rt/itcms/visitRoots (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 +224,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 +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 @@ -429,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 @@ -462,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 @@ -499,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 @@ -509,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 @@ -647,7 +490,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -658,7 +501,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -678,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 @@ -725,7 +567,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -735,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 @@ -776,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 @@ -803,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 @@ -823,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 @@ -852,6 +691,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -861,7 +703,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -898,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 @@ -976,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 @@ -1023,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - 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 $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -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 $2 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,20 +1615,20 @@ 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 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 @@ -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 @@ -1816,9 +1663,9 @@ i32.const 16 i32.shr_u local.tee $1 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 @@ -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,91 +1715,91 @@ 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 $1 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 $1 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 i32.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.load i32.const -3 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 + local.tee $1 i32.load offset=8 - local.set $4 + local.set $3 + local.get $0 local.get $1 global.get $~lib/rt/itcms/white - local.get $2 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 $2 local.get $0 - local.get $1 i32.const 20 i32.add local.tee $0 @@ -1973,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 @@ -2080,4 +1926,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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 + ) ) diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 422b7142f8..d3f978daea 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)) @@ -1710,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/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..b78322598c 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 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 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 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 @@ -232,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/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/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat index c1d81ed05c..848be996bd 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,19 +24,19 @@ 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 i64.const 33 i64.shr_u + local.get $0 i64.xor i64.const -49064778989728563 i64.mul @@ -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..150dbd3589 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,36 +1165,34 @@ (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 $6 - local.set $3 - local.get $6 + local.tee $3 i32.const 100000 i32.lt_u if (result i32) @@ -1273,107 +1261,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 +1374,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 48 @@ -1397,16 +1385,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 +1406,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 +1417,42 @@ i32.shl local.get $0 i32.add - local.tee $6 + local.tee $0 i32.load16_u - local.set $3 + local.set $9 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 $9 i32.const 1 i32.sub - local.set $3 + local.set $9 local.get $1 local.get $2 i64.add @@ -1474,8 +1460,8 @@ br $while-continue|3 end end - local.get $6 - local.get $3 + local.get $0 + local.get $9 i32.store16 local.get $5 return @@ -1483,7 +1469,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 +1478,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 +1510,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 $9 + 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 $9 + i32.const 1 + i32.sub + local.set $9 + local.get $1 + local.get $13 + i64.add + local.set $1 + br $while-continue|6 + end end + local.get $0 + local.get $9 + 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 +1603,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 +1759,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 +1786,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 +1797,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 +1808,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 +1822,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 +1852,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 +1877,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 +1888,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 +1899,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 +1913,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 +1939,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 +1964,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 +1975,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 +1986,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 +2000,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 +2037,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 +2156,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 +2219,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 +2230,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 +2248,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 +2569,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 +2587,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 +2614,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 +2655,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 +2683,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 +2701,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -2762,24 +2712,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 +2774,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 +2807,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 +2827,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 +2899,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 +2929,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 +2970,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 +2997,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 +3007,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 +3036,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 +3116,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 +3135,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 +3166,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) @@ -3312,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 @@ -3337,71 +3277,69 @@ i32.const 2048 i32.lt_u if (result i32) - local.get $7 - i32.const 2 - i32.add - else - local.get $8 local.get $6 i32.const 2 i32.add - i32.gt_u - i32.const 0 + else local.get $9 i32.const 64512 i32.and i32.const 55296 i32.eq - select + local.get $8 + 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 - local.get $7 - i32.const 56 - local.get $7 - i32.const 56 - i32.gt_s - select - i32.const 13 - i32.add - local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $9 - local.get $7 + local.set $8 + local.get $6 + i32.const 56 + local.get $6 + i32.const 56 + i32.gt_s + select + i32.const 13 + i32.add + local.tee $6 i32.const 1073741820 i32.gt_u if @@ -3412,54 +3350,51 @@ call $~lib/wasi/index/abort unreachable end - local.get $7 + local.get $8 + 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 + local.tee $7 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,18 +3419,18 @@ 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 + local.tee $7 i32.eqz if i32.const 0 @@ -3506,11 +3441,11 @@ unreachable end end - local.get $6 + local.get $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 $6 + local.get $8 + local.get $7 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.get $9 i32.const 4 i32.add i32.const 15 @@ -3545,7 +3477,7 @@ local.get $6 i32.const -4 i32.and - local.get $8 + local.get $9 i32.sub local.tee $10 i32.const 16 @@ -3555,10 +3487,10 @@ local.get $6 i32.const 2 i32.and - local.get $8 + local.get $9 i32.or i32.store - local.get $8 + local.get $9 local.get $7 i32.const 4 i32.add @@ -3570,7 +3502,7 @@ i32.const 1 i32.or i32.store - local.get $9 + local.get $8 local.get $6 call $~lib/rt/tlsf/insertBlock else @@ -3597,26 +3529,26 @@ local.get $7 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/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.optimized.wat b/tests/compiler/while.optimized.wat index 3105313e7f..778cd42c77 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 @@ -833,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 - global.set $~lib/rt/itcms/iter - br $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 - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and + i32.const 1 + global.set $~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 + 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|1 + 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 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -880,218 +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 - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - 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 $1 - 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 $1 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $0 - local.get $0 + else + local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $0 - 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) @@ -1100,9 +942,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 +960,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 +976,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,6 +996,15 @@ (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) i32.const 10 local.set $0 loop $while-continue|0 @@ -1163,10 +1014,10 @@ i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $10 i32.const 1 i32.add - local.set $2 + local.set $10 br $while-continue|0 end end @@ -1179,7 +1030,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $10 i32.const 10 i32.ne if @@ -1190,11 +1041,9 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $2 i32.const 10 local.set $0 - loop $while-continue|00 + loop $while-continue|01 local.get $0 if local.get $0 @@ -1212,10 +1061,10 @@ i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $11 i32.const 1 i32.add - local.set $2 + local.set $11 br $while-continue|1 end end @@ -1228,7 +1077,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $11 i32.const 9 i32.ne if @@ -1239,7 +1088,7 @@ call $~lib/builtins/abort unreachable end - br $while-continue|00 + br $while-continue|01 end end local.get $0 @@ -1262,7 +1111,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $11 i32.const 9 i32.ne if @@ -1273,11 +1122,9 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $2 i32.const 1 local.set $0 - loop $while-continue|01 + loop $while-continue|03 local.get $0 local.tee $1 i32.const 1 @@ -1285,14 +1132,14 @@ local.set $0 local.get $1 if (result i32) - local.get $2 + local.get $9 i32.const 1 i32.add - local.tee $2 + local.tee $9 else i32.const 0 end - br_if $while-continue|01 + br_if $while-continue|03 end local.get $0 i32.const -1 @@ -1305,7 +1152,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $9 i32.const 1 i32.ne if @@ -1316,18 +1163,16 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $while-continue|02 - local.get $0 + loop $while-continue|05 + local.get $8 i32.const 1 i32.add - local.tee $0 + local.tee $8 i32.const 10 i32.ne - br_if $while-continue|02 + br_if $while-continue|05 end - local.get $0 + local.get $8 i32.const 10 i32.ne if @@ -1338,18 +1183,16 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $while-continue|03 - local.get $0 + loop $while-continue|07 + local.get $7 i32.const 1 i32.add - local.tee $0 + local.tee $7 i32.const 10 i32.ne - br_if $while-continue|03 + br_if $while-continue|07 end - local.get $0 + local.get $7 i32.const 10 i32.ne if @@ -1362,14 +1205,14 @@ end i32.const 10 local.set $0 - loop $while-continue|04 + loop $while-continue|013 local.get $0 if local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|04 + br $while-continue|013 end end local.get $0 @@ -1384,25 +1227,25 @@ i32.const 10 local.set $0 i32.const 10 - local.set $2 - loop $while-continue|05 + local.set $11 + loop $while-continue|015 local.get $0 if - loop $while-continue|16 - local.get $2 + loop $while-continue|117 + local.get $11 if - local.get $2 + local.get $11 i32.const 1 i32.sub - local.set $2 - br $while-continue|16 + local.set $11 + br $while-continue|117 end end local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|05 + br $while-continue|015 end end local.get $0 @@ -1414,7 +1257,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $11 if i32.const 0 i32.const 1056 @@ -1455,8 +1298,6 @@ 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 @@ -1467,20 +1308,20 @@ 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 i32.store - loop $while-continue|07 + loop $while-continue|08 local.get $0 if - local.get $2 + local.get $6 i32.const 1 i32.add - local.tee $2 + local.tee $6 i32.const 10 i32.eq if @@ -1492,10 +1333,10 @@ local.tee $0 i32.store end - br $while-continue|07 + br $while-continue|08 end end - local.get $2 + local.get $6 i32.const 10 i32.ne if @@ -1519,8 +1360,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 @@ -1530,33 +1369,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 i32.store - loop $while-continue|06 + loop $while-continue|012 call $while/Ref#constructor if - block $while-break|07 - local.get $2 + block $while-break|011 + local.get $5 i32.const 1 i32.add - local.tee $2 + local.tee $5 i32.const 10 i32.eq if i32.const 0 local.set $0 - br $while-break|07 + br $while-break|011 end - br $while-continue|06 + br $while-continue|012 end end end - local.get $2 + local.get $5 i32.const 10 i32.ne if @@ -1580,40 +1419,34 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - loop $while-continue|08 - local.get $0 + loop $while-continue|019 + local.get $3 i32.const 1 i32.add - local.tee $0 - i32.const 1 - i32.lt_s - br_if $while-continue|08 + local.tee $3 + i32.const 0 + i32.le_s + br_if $while-continue|019 end - i32.const 0 - local.set $0 - loop $while-continue|010 - local.get $0 + loop $while-continue|021 + local.get $2 i32.const 1 i32.add - local.tee $0 - i32.const 1 - i32.lt_s - br_if $while-continue|010 + local.tee $2 + i32.const 0 + i32.le_s + 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 @@ -1628,23 +1461,23 @@ i32.const 0 i32.gt_s if - loop $while-continue|012 + loop $while-continue|023 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|012 + br $while-continue|023 end end end call $~lib/rt/itcms/step drop - loop $while-continue|113 + loop $while-continue|125 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|113 + br $while-continue|125 end end global.get $~lib/rt/itcms/total @@ -1687,7 +1520,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 +1553,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1757,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 @@ -1774,17 +1607,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 +1630,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 @@ -1814,15 +1647,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 +1682,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 $1 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 +1706,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $1 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 @@ -1915,8 +1748,8 @@ i32.load offset=8 local.set $3 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 @@ -1942,16 +1775,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $2 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 $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 $1 + 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 $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + 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 + 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 ) ) diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index 024fa87b47..b5b316251b 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)) @@ -1988,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 @@ -3073,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 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/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" 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"); 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